77
88namespace SourceGit . Models
99{
10- public class ExternalMerger
10+ public class ExternalMerger ( string icon , string name , string finder , string mergeCmd , string diffCmd )
1111 {
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 ;
1817
1918 public Bitmap IconImage
2019 {
@@ -32,74 +31,69 @@ static ExternalMerger()
3231 if ( OperatingSystem . IsWindows ( ) )
3332 {
3433 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\" " ) ,
4847 } ;
4948 }
5049 else if ( OperatingSystem . IsMacOS ( ) )
5150 {
5251 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\" " ) ,
6261 } ;
6362 }
6463 else if ( OperatingSystem . IsLinux ( ) )
6564 {
6665 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\" " ) ,
7675 } ;
7776 }
7877 else
7978 {
8079 Supported = new List < ExternalMerger > ( ) {
81- new ExternalMerger ( 0 , "git" , "Use Git Settings" , "" , "" , "" ) ,
80+ new ExternalMerger ( "git" , "Use Git Settings" , "" , "" , "" ) ,
8281 } ;
8382 }
8483 }
8584
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 ( )
9786 {
9887 if ( OperatingSystem . IsWindows ( ) )
99- return Exec . Split ( ';' ) ;
88+ return Finder . Split ( ';' , StringSplitOptions . RemoveEmptyEntries ) ;
10089
101- var choices = Exec . Split ( ';' , StringSplitOptions . RemoveEmptyEntries ) ;
102- return Array . ConvertAll ( choices , Path . GetFileName ) ;
90+ return [ Path . GetFileName ( Finder ) ] ;
10391 }
10492 }
93+
94+ public class DiffMergeTool ( string exec , string cmd )
95+ {
96+ public string Exec { get ; } = exec ;
97+ public string Cmd { get ; } = cmd ;
98+ }
10599}
0 commit comments