1

ドキュメントとここでのさまざまな回答によると、git difftoolは、ファイルパスに設定された環境変数LOCALおよびREMOTEを使用して、指定された実行可能ファイル(通常はシェルスクリプト)を呼び出します。しかし、試してみると、LOCALとREMOTEが設定されていません。私は次のテストを試しました:

git config --global diff.tool mytest  
git config --global difftool.mytest.cmd mytest.sh  
git config --global difftool.prompt false  

mytest.shで:

#!/bin/sh  
echo "LOCAL:$LOCAL REMOTE:$REMOTE"  

呼び出し:

git difftool --tool mytest <commitid> -- <path-to-file>  

出力:

LOCAL: REMOTE:  

助言がありますか?

4

2 に答える 2

4

マニュアルページが意味することは、difftool.<tool>.cmd がそのコマンドラインに$LOCALandを持つことができるということです。$REMOTEこれらは、関連するファイル パスに置き換えられます。これらの変数が環境にエクスポートされることは意図されていません。

例を示すために、元のセットアップを作り直したバージョンを次に示します。

git config --global diff.tool mytest  
git config --global difftool.mytest.cmd 'mytest.sh $LOCAL $REMOTE'
git config --global difftool.prompt false
于 2009-12-18T20:44:34.820 に答える
0

これは、私がいつも使用してきた差分ラッパーです (tkdiff を使用):

#!/bin/sh

# diff is called with 7 parameters:
# path old-file old-hex old-mode new-file new-hex new-mode

tkdiff "$2" "$5"

$LOCALandではなくパラメータを使用します$REMOTE

于 2009-12-18T19:49:49.390 に答える