您可以通过检查输出是否已由 kdiff3 写入来判断自动合并是否有效,如该线程中所述
如果您没有明确指定输出文件(通过-o
),那么第三个(最后一个)文件将是目标。
合并后成功保存输出文件时,退出状态为 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
;;