好的...我明白了,在DOS或Git Bash下,使用msysgit版本1.6.3.2.1299.gee46c和Araxis Merge 2009 v2009.3713的评估许可证,我已经使它工作:
方法是使用新的git difftool
和git mergetool
,而不是普通的diff。
首先,让我们为这些diff和merge工具设置一些脚本。
C:\>git config --global diff.tool adifftool
C:\>git config --global diff.external git-difftool--helper
C:\>git config --global difftool.adifftool.cmd "difftool.sh \"$LOCAL\" \"$REMOTE\" \"$MERGED\""
C:\>git config --global difftool.prompt false
注意:
- 通过将diff.external设置为Git脚本
git-difftool--helper
,即使我键入“git diff
”,我也将使用difftool。
- 不要忘记将
$MERGED
传递到您的difftool脚本中:这是唯一带有被diff'ed文件的真实名称的变量。 $LOCAL
和$REMOTE
是临时名称。
对于合并工具,您需要设置以下全局值:
C:\>git config --global merge.tool amergetool
C:\>git config --global mergetool.amergetool.cmd "mergetool.sh \"$PWD/$LOCAL\" \"$PWD/$BASE\" \"$PWD/$REMOTE\" \"$PWD/$MERGED\""
C:\>git config --global mergetool.prompt false
通过将这些工具设置为一些shell脚本,您将能够从这些脚本内部切换工具。
另一种方法是给你的工具命名(
mergetool.araxis.cmd
,
mergetool.winmerge.cmd
,...),并在
diff.tool
或
merge.tool
设置中指定正确的工具。
在一个由全局环境变量
PATH
引用的目录中创建
difftool.sh
和
mergetool.sh
。它们甚至可以在DOS上运行(它们是
sh
-- shell -- 脚本)。
difftool.sh
#!/bin/sh
echo Launching Araxis Merge.exe: $3
t1="'$3 (from)'"
t2="'(to)'"
"C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -nowait -2 -title1:${t1} -title2:${t2} "$1" "$2"
注:
不可能有-title1:“someTitle With Space”...只有没有空格的标题才能工作......所以现在,尝试不使用任何 'titleN
' 选项。
明白了!您不能直接将标题值传递给 -title
选项,您需要将其设置为本地变量,并使用 "' '"
引号组合(双引号将在 shell 脚本执行期间消失,留下单引号,允许标题中包含空格!)
$3
表示真实名称而不是某些用于 diff 目的的临时文件名。因此,在其中使用 $3
的 title1
选项,其中包含空格。
git diff HEAD^ HEAD
在 DOS 会话中无法工作:只有 git diff "HEAD^" HEAD
才可以。
mergetool.sh
#!/bin/sh
alocal=$1
base=$2
remote=$3
result=$4
t1="'$4 (current branch)'"
t2="'(common ancestor)'"
t3="'(to be merged)'"
if [ -f $base ]
then
"C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$base" "$remote" "$result"
else
"C:/Program Files/Araxis/Araxis Merge/Compare.exe" -max -wait -merge -3 -a2 -title1:${t1} -title2:${t2} -title3:${t3} "$alocal" "$result" "$remote" "$result"
fi
我不确定当涉及到多个文件时(多个差异,多个要合并的文件)这些脚本是否能正常工作。
刚刚测试了一下:它可以工作,而且Araxis compare.exe会为每个文件打开一个选项卡以进行差异比较或合并。
试试看,然后告诉我们吧 ;)