このスレッドで言及されているように、出力が kdiff3 によって書き込まれたかどうかを確認することで、自動マージが機能したかどうかを確認できます。
出力ファイルを ( 経由で) 明示的に指定しない場合-o
、3 番目 (最後) のファイルが出力先になります。
マージ後に出力ファイルが正常に保存された場合、終了ステータスは 0 です。
保存せずに終了すると 1 になります。
それがこのスクリプトがテストしているものです(ここでは例として)が、次を使用していdiff3
ます:
(kdiff3コマンドラインオプションを使用すると、コマンドラインにオプションを追加する必要があり-auto
ます)
echo "Attempting to auto-merge ${baseFileName}" 1>&2
diff3 -L $labelMine -L $labelOlder -L $labelTheirs -Em $mine $older $theirs > $output
if [ $? = 1 ]; then
#Can't auto merge
rm -f $output
$VDIFF3 $older $mine $theirs --L1 $labelOlder --L2 $labelMine --L3 $labelTheirs -o $output --auto 1>&2
bLoop=1
if [ -f $output ]; then
if [ -s $output ]; then
#output succesfully written
bLoop=0
fi
fi
if [ $bLoop = 0 ]; then
cat $output
rm -f $output
exit 0
else
echo "Merge failed, try again" 1>&2
fi
else
#We can automerge, and we already did it
cat $output
rm -f $output
exit 0
fi
;;