そうです... msysgit バージョン 1.6.3.2.1299.gee46c、DOS または Git Bash、Araxis Merge 2009、v2009.3713 の評価ライセンスで動作しました。
アプローチは、単純な diff の代わりにnew git difftool
andを使用することです。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
ノート:
- Git スクリプト
git-difftool--helper
に diff.external を設定することで、「 」と入力しても difftool を使用するようになりますgit diff
。
$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
これらのツールを一部のシェル スクリプトに設定することで、それらのスクリプト内からツールを切り替えることができます。
もう 1 つの方法は、ツール ( mergetool.araxis.cmd
、mergetool.winmerge.cmd
、...) に名前を付け、diff.tool
またはmerge.tool
設定で適切なツールを指定することです。
グローバル環境変数によって参照されるディレクトリにdifftool.sh
とを作成します。それらは DOS からでも動作します (そしてそれらは-- シェル -- スクリプトです) 。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"
ノート:
-title1:"someTitle With Space"titleN
を使用することはできません ... スペースのないタイトルのみが機能します... したがって、今のところ、' ' オプションなしで試してください。
とった!タイトルの値をオプションに直接渡すことはできません。引用符の組み合わせ-title
を使用して、ローカル変数に設定する必要があります"' '"
(シェル スクリプトの実行中に二重引用符が消え、単純な引用符が残り、タイトル内にスペースが許可されます!)
$3
diff目的の一時ファイル名ではなく、実際の名前を表します。したがって、オプション $3
内でスペースを使用して を使用します。title1
git diff HEAD^ HEAD
DOS セッションでは動作しません: 動作するだけgit diff "HEAD^" HEAD
です。
マージツール.sh
#!/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
複数のファイルが関係している場合 (複数の差分、複数のファイルをマージする場合)、これらのスクリプトが適切に機能するかどうかはわかりません。
ちょうどテストしました: 動作し、Araxis compare.exe はファイルごとに 1 つのタブを開き、差分またはマージを行います。
試してみて、お知らせください ;)