joc*_*oce 14 windows git diff msysgit araxis
我正在尝试使用Araxis Merge作为MSYSGit的差异/合并工具.
我在网上找到了一些资源:
我建立 /bin/git-diff-driver.sh
#!/bin/sh
"/c/Program Files/Araxis/Araxis Merge/compare.exe" -title1:"$1 (repo version)" -title2:"$1 " -max "$2" "$5"
Run Code Online (Sandbox Code Playgroud)
并编辑 gitconfig
[merge]
tool = araxismerge
[mergetool "araxismerge"]
cmd = "/c/Program Files/Araxis/Araxis Merge/compare.exe" -3 -merge -wait $LOCAL $BASE $REMOTE $MERGED
[diff]
external = "/bin/git-diff-driver.sh"
Run Code Online (Sandbox Code Playgroud)
我得到的唯一结果是:
$ git diff HEAD ^ HEAD
外部差异死亡,停在PowerEditor/src/Notepad_plus.cpp.
我也尝试过使用"c:/Program Files/Araxis/Araxis Merge/compare.exe"
其中一个答案所建议的exe ,并得到相同的结果.
我发现如果你使用TortoiseGit它可以轻松设置,但它似乎自己处理diff并且没有来自TortoiseGit的设置给出任何关于如何在从命令行调用diff时将Araxis设置为合并工具的指示.
所以,问题是:是否有人成功使用Araxis Merge来区分和合并MSYSGit,如果是这样,你怎么样?
The*_*ell 16
如果你想要'git diff'总是使用araxis你可以使用帮助文件中的说明,但是如果你想控制使用'git diff',就像你通常从命令行那样使用'git difftool'来搞定Araxis GUI.
尝试将以下内容添加到您的git config ::
[difftool "araxis"]
path = "/c/Program Files/Araxis/Araxis Merge/compare.exe"
renames = true
trustExitCode = true
[diff]
tool = araxis
stat = true
[mergetool "araxismergetool"]
cmd = 'C:\\Program Files\\Araxis\\Araxis Merge\\araxisgitmerge.exe' "$REMOTE" "$BASE" "$PWD/$LOCAL" "$PWD/$MERGED"
trustExitCode = false
[mergetool]
keepBackup = false
[merge]
tool = araxismergetool
stat = true
Run Code Online (Sandbox Code Playgroud)
araxis上的文档已更新:http://www.araxis.com/merge/documentation-windows/integrating-with-other-applications#Git
我可以使用那里显示的配置而不做任何修改.
对...我在 DOS 或 Git Bash 下使用 msysgit 版本 1.6.3.2.1299.gee46c 运行,并获得了 Araxis Merge 2009, v2009.3713 的评估许可证:
方法是使用新的git difftool
和git mergetool
,而不是普通的差异。
首先,让我们为那些差异和合并工具设置一些脚本
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
Run Code Online (Sandbox Code Playgroud)
笔记:
git-difftool--helper
,即使我将键入“ git diff
” ,我也会使用 difftool 。 $MERGED
给您的 difftool 脚本:这是唯一一个具有被 diff 文件真实名称的变量。$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
Run Code Online (Sandbox Code Playgroud)
通过将这些工具设置为某些 shell 脚本,您将能够从这些脚本中切换工具。
另一种方法是命名您的工具(mergetool.araxis.cmd
, mergetool.winmerge.cmd
, ...)并在diff.tool
或merge.tool
设置中指定正确的工具。
在全局环境变量引用的目录中创建difftool.sh
和。它们甚至可以在 DOS 下工作(它们是-- shell -- 脚本)mergetool.sh
PATH
sh
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"
Run Code Online (Sandbox Code Playgroud)
笔记:
titleN
' 选项。-title
选项,您需要将其设置为局部变量,带"' '"
引号组合(在 shell 脚本执行过程中双引号会消失,留下简单的引号,标题中允许有空格!)$3
代表真实名称而不是一些用于差异目的的临时文件名。因此$3
在title1
选项内使用,其中有空格。 git diff HEAD^ HEAD
不会在 DOS 会话中工作:只会git diff "HEAD^" HEAD
。合并工具
#!/bin/sh
# Passing the following parameters to mergetool:
# local base remote merge_result
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
Run Code Online (Sandbox Code Playgroud)
当涉及多个文件(多个差异,要合并的多个文件)时,我不确定这些脚本是否能正常工作。
刚刚测试了它:它有效,并且 Araxis compare.exe 确实为每个文件打开一个选项卡以进行差异或合并。
试一试,让我们知道;)
归档时间: |
|
查看次数: |
15989 次 |
最近记录: |