7
7
8
8
namespace SourceGit . Models
9
9
{
10
- public class ExternalMerger
10
+ public class ExternalMerger ( string icon , string name , string finder , string mergeCmd , string diffCmd )
11
11
{
12
- public int Type { get ; set ; }
13
- public string Icon { get ; set ; }
14
- public string Name { get ; set ; }
15
- public string Exec { get ; set ; }
16
- public string Cmd { get ; set ; }
17
- public string DiffCmd { get ; set ; }
12
+ public string Icon { get ; } = icon ;
13
+ public string Name { get ; } = name ;
14
+ public string Finder { get ; } = finder ;
15
+ public string MergeCmd { get ; } = mergeCmd ;
16
+ public string DiffCmd { get ; } = diffCmd ;
18
17
19
18
public Bitmap IconImage
20
19
{
@@ -32,74 +31,69 @@ static ExternalMerger()
32
31
if ( OperatingSystem . IsWindows ( ) )
33
32
{
34
33
Supported = new List < ExternalMerger > ( ) {
35
- new ExternalMerger ( 0 , "git" , "Use Git Settings" , "" , "" , "" ) ,
36
- new ExternalMerger ( 1 , "vscode" , "Visual Studio Code" , "Code.exe" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
37
- new ExternalMerger ( 2 , "vscode_insiders" , "Visual Studio Code - Insiders" , "Code - Insiders.exe" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
38
- new ExternalMerger ( 3 , "vs" , "Visual Studio" , "vsDiffMerge.exe" , "\" $REMOTE\" \" $LOCAL\" \" $BASE\" \" $MERGED\" /m" , "\" $LOCAL\" \" $REMOTE\" " ) ,
39
- new ExternalMerger ( 4 , "tortoise_merge" , "Tortoise Merge" , "TortoiseMerge.exe;TortoiseGitMerge.exe" , "-base:\" $BASE\" -theirs:\" $REMOTE\" -mine:\" $LOCAL\" -merged:\" $MERGED\" " , "-base:\" $LOCAL\" -theirs:\" $REMOTE\" " ) ,
40
- new ExternalMerger ( 5 , "kdiff3" , "KDiff3" , "kdiff3.exe" , "\" $REMOTE\" -b \" $BASE\" \" $LOCAL\" -o \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
41
- new ExternalMerger ( 6 , "beyond_compare" , "Beyond Compare" , "BComp.exe" , "\" $REMOTE\" \" $LOCAL\" \" $BASE\" \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
42
- new ExternalMerger ( 7 , "win_merge" , "WinMerge" , "WinMergeU.exe" , "\" $MERGED\" " , "-u -e -sw \" $LOCAL\" \" $REMOTE\" " ) ,
43
- new ExternalMerger ( 8 , "codium" , "VSCodium" , "VSCodium.exe" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
44
- new ExternalMerger ( 9 , "p4merge" , "P4Merge" , "p4merge.exe" , "-tw 4 \" $BASE\" \" $LOCAL\" \" $REMOTE\" \" $MERGED\" " , "-tw 4 \" $LOCAL\" \" $REMOTE\" " ) ,
45
- new ExternalMerger ( 10 , "plastic_merge" , "Plastic SCM" , "mergetool.exe" , "-s=\" $REMOTE\" -b=\" $BASE\" -d=\" $LOCAL\" -r=\" $MERGED\" --automatic" , "-s=\" $LOCAL\" -d=\" $REMOTE\" " ) ,
46
- new ExternalMerger ( 11 , "meld" , "Meld" , "Meld.exe" , "\" $LOCAL\" \" $BASE\" \" $REMOTE\" --output \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
47
- new ExternalMerger ( 12 , "cursor" , "Cursor" , "Cursor.exe" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
34
+ new ExternalMerger ( "git" , "Use Git Settings" , "" , "" , "" ) ,
35
+ new ExternalMerger ( "vscode" , "Visual Studio Code" , "Code.exe" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
36
+ new ExternalMerger ( "vscode_insiders" , "Visual Studio Code - Insiders" , "Code - Insiders.exe" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
37
+ new ExternalMerger ( "vs" , "Visual Studio" , "vsDiffMerge.exe" , "\" $REMOTE\" \" $LOCAL\" \" $BASE\" \" $MERGED\" /m" , "\" $LOCAL\" \" $REMOTE\" " ) ,
38
+ new ExternalMerger ( "tortoise_merge" , "Tortoise Merge" , "TortoiseMerge.exe;TortoiseGitMerge.exe" , "-base:\" $BASE\" -theirs:\" $REMOTE\" -mine:\" $LOCAL\" -merged:\" $MERGED\" " , "-base:\" $LOCAL\" -theirs:\" $REMOTE\" " ) ,
39
+ new ExternalMerger ( "kdiff3" , "KDiff3" , "kdiff3.exe" , "\" $REMOTE\" -b \" $BASE\" \" $LOCAL\" -o \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
40
+ new ExternalMerger ( "beyond_compare" , "Beyond Compare" , "BComp.exe" , "\" $REMOTE\" \" $LOCAL\" \" $BASE\" \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
41
+ new ExternalMerger ( "win_merge" , "WinMerge" , "WinMergeU.exe" , "\" $MERGED\" " , "-u -e -sw \" $LOCAL\" \" $REMOTE\" " ) ,
42
+ new ExternalMerger ( "codium" , "VSCodium" , "VSCodium.exe" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
43
+ new ExternalMerger ( "p4merge" , "P4Merge" , "p4merge.exe" , "-tw 4 \" $BASE\" \" $LOCAL\" \" $REMOTE\" \" $MERGED\" " , "-tw 4 \" $LOCAL\" \" $REMOTE\" " ) ,
44
+ new ExternalMerger ( "plastic_merge" , "Plastic SCM" , "mergetool.exe" , "-s=\" $REMOTE\" -b=\" $BASE\" -d=\" $LOCAL\" -r=\" $MERGED\" --automatic" , "-s=\" $LOCAL\" -d=\" $REMOTE\" " ) ,
45
+ new ExternalMerger ( "meld" , "Meld" , "Meld.exe" , "\" $LOCAL\" \" $BASE\" \" $REMOTE\" --output \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
46
+ new ExternalMerger ( "cursor" , "Cursor" , "Cursor.exe" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
48
47
} ;
49
48
}
50
49
else if ( OperatingSystem . IsMacOS ( ) )
51
50
{
52
51
Supported = new List < ExternalMerger > ( ) {
53
- new ExternalMerger ( 0 , "git" , "Use Git Settings" , "" , "" , "" ) ,
54
- new ExternalMerger ( 1 , "xcode" , "FileMerge" , "/usr/bin/opendiff" , "\" $BASE\" \" $LOCAL\" \" $REMOTE\" -ancestor \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
55
- new ExternalMerger ( 2 , "vscode" , "Visual Studio Code" , "/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
56
- new ExternalMerger ( 3 , "vscode_insiders" , "Visual Studio Code - Insiders" , "/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
57
- new ExternalMerger ( 4 , "kdiff3" , "KDiff3" , "/Applications/kdiff3.app/Contents/MacOS/kdiff3" , "\" $REMOTE\" -b \" $BASE\" \" $LOCAL\" -o \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
58
- new ExternalMerger ( 5 , "beyond_compare" , "Beyond Compare" , "/Applications/Beyond Compare.app/Contents/MacOS/bcomp" , "\" $REMOTE\" \" $LOCAL\" \" $BASE\" \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
59
- new ExternalMerger ( 6 , "codium" , "VSCodium" , "/Applications/VSCodium.app/Contents/Resources/app/bin/codium" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
60
- new ExternalMerger ( 7 , "p4merge" , "P4Merge" , "/Applications/p4merge.app/Contents/Resources/launchp4merge" , "-tw 4 \" $BASE\" \" $LOCAL\" \" $REMOTE\" \" $MERGED\" " , "-tw 4 \" $LOCAL\" \" $REMOTE\" " ) ,
61
- new ExternalMerger ( 8 , "cursor" , "Cursor" , "/Applications/Cursor.app/Contents/Resources/app/bin/cursor" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
52
+ new ExternalMerger ( "git" , "Use Git Settings" , "" , "" , "" ) ,
53
+ new ExternalMerger ( "xcode" , "FileMerge" , "/usr/bin/opendiff" , "\" $BASE\" \" $LOCAL\" \" $REMOTE\" -ancestor \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
54
+ new ExternalMerger ( "vscode" , "Visual Studio Code" , "/Applications/Visual Studio Code.app/Contents/Resources/app/bin/code" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
55
+ new ExternalMerger ( "vscode_insiders" , "Visual Studio Code - Insiders" , "/Applications/Visual Studio Code - Insiders.app/Contents/Resources/app/bin/code" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
56
+ new ExternalMerger ( "kdiff3" , "KDiff3" , "/Applications/kdiff3.app/Contents/MacOS/kdiff3" , "\" $REMOTE\" -b \" $BASE\" \" $LOCAL\" -o \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
57
+ new ExternalMerger ( "beyond_compare" , "Beyond Compare" , "/Applications/Beyond Compare.app/Contents/MacOS/bcomp" , "\" $REMOTE\" \" $LOCAL\" \" $BASE\" \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
58
+ new ExternalMerger ( "codium" , "VSCodium" , "/Applications/VSCodium.app/Contents/Resources/app/bin/codium" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
59
+ new ExternalMerger ( "p4merge" , "P4Merge" , "/Applications/p4merge.app/Contents/Resources/launchp4merge" , "-tw 4 \" $BASE\" \" $LOCAL\" \" $REMOTE\" \" $MERGED\" " , "-tw 4 \" $LOCAL\" \" $REMOTE\" " ) ,
60
+ new ExternalMerger ( "cursor" , "Cursor" , "/Applications/Cursor.app/Contents/Resources/app/bin/cursor" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
62
61
} ;
63
62
}
64
63
else if ( OperatingSystem . IsLinux ( ) )
65
64
{
66
65
Supported = new List < ExternalMerger > ( ) {
67
- new ExternalMerger ( 0 , "git" , "Use Git Settings" , "" , "" , "" ) ,
68
- new ExternalMerger ( 1 , "vscode" , "Visual Studio Code" , "/usr/share/code/code" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
69
- new ExternalMerger ( 2 , "vscode_insiders" , "Visual Studio Code - Insiders" , "/usr/share/code-insiders/code-insiders" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
70
- new ExternalMerger ( 3 , "kdiff3" , "KDiff3" , "/usr/bin/kdiff3" , "\" $REMOTE\" -b \" $BASE\" \" $LOCAL\" -o \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
71
- new ExternalMerger ( 4 , "beyond_compare" , "Beyond Compare" , "/usr/bin/bcomp" , "\" $REMOTE\" \" $LOCAL\" \" $BASE\" \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
72
- new ExternalMerger ( 5 , "meld" , "Meld" , "/usr/bin/meld" , "\" $LOCAL\" \" $BASE\" \" $REMOTE\" --output \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
73
- new ExternalMerger ( 6 , "codium" , "VSCodium" , "/usr/share/codium/bin/codium" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
74
- new ExternalMerger ( 7 , "p4merge" , "P4Merge" , "/usr/local/bin/p4merge" , "-tw 4 \" $BASE\" \" $LOCAL\" \" $REMOTE\" \" $MERGED\" " , "-tw 4 \" $LOCAL\" \" $REMOTE\" " ) ,
75
- new ExternalMerger ( 8 , "cursor" , "Cursor" , "cursor" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
66
+ new ExternalMerger ( "git" , "Use Git Settings" , "" , "" , "" ) ,
67
+ new ExternalMerger ( "vscode" , "Visual Studio Code" , "/usr/share/code/code" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
68
+ new ExternalMerger ( "vscode_insiders" , "Visual Studio Code - Insiders" , "/usr/share/code-insiders/code-insiders" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
69
+ new ExternalMerger ( "kdiff3" , "KDiff3" , "/usr/bin/kdiff3" , "\" $REMOTE\" -b \" $BASE\" \" $LOCAL\" -o \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
70
+ new ExternalMerger ( "beyond_compare" , "Beyond Compare" , "/usr/bin/bcomp" , "\" $REMOTE\" \" $LOCAL\" \" $BASE\" \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
71
+ new ExternalMerger ( "meld" , "Meld" , "/usr/bin/meld" , "\" $LOCAL\" \" $BASE\" \" $REMOTE\" --output \" $MERGED\" " , "\" $LOCAL\" \" $REMOTE\" " ) ,
72
+ new ExternalMerger ( "codium" , "VSCodium" , "/usr/share/codium/bin/codium" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
73
+ new ExternalMerger ( "p4merge" , "P4Merge" , "/usr/local/bin/p4merge" , "-tw 4 \" $BASE\" \" $LOCAL\" \" $REMOTE\" \" $MERGED\" " , "-tw 4 \" $LOCAL\" \" $REMOTE\" " ) ,
74
+ new ExternalMerger ( "cursor" , "Cursor" , "cursor" , "-n --wait \" $MERGED\" " , "-n --wait --diff \" $LOCAL\" \" $REMOTE\" " ) ,
76
75
} ;
77
76
}
78
77
else
79
78
{
80
79
Supported = new List < ExternalMerger > ( ) {
81
- new ExternalMerger ( 0 , "git" , "Use Git Settings" , "" , "" , "" ) ,
80
+ new ExternalMerger ( "git" , "Use Git Settings" , "" , "" , "" ) ,
82
81
} ;
83
82
}
84
83
}
85
84
86
- public ExternalMerger ( int type , string icon , string name , string exec , string cmd , string diffCmd )
87
- {
88
- Type = type ;
89
- Icon = icon ;
90
- Name = name ;
91
- Exec = exec ;
92
- Cmd = cmd ;
93
- DiffCmd = diffCmd ;
94
- }
95
-
96
- public string [ ] GetPatterns ( )
85
+ public string [ ] GetPatternsToFindExecFile ( )
97
86
{
98
87
if ( OperatingSystem . IsWindows ( ) )
99
- return Exec . Split ( ';' ) ;
88
+ return Finder . Split ( ';' , StringSplitOptions . RemoveEmptyEntries ) ;
100
89
101
- var choices = Exec . Split ( ';' , StringSplitOptions . RemoveEmptyEntries ) ;
102
- return Array . ConvertAll ( choices , Path . GetFileName ) ;
90
+ return [ Path . GetFileName ( Finder ) ] ;
103
91
}
104
92
}
93
+
94
+ public class ExternalMergeToolOption ( string exec , string cmd )
95
+ {
96
+ public string Exec { get ; } = exec ;
97
+ public string Cmd { get ; } = cmd ;
98
+ }
105
99
}
0 commit comments