当两个人同时修改一个公用文件时,diff3就会发挥作用.它比较两个人做出的两套修改内容,创建第3个文件保存并后的输出结果,并且指出双方修改的冲突之处.diff3的语法是:
diff
[options] myfile oldfile
yourfile
oldfile是派生出myfile和yourfile的共同源文件.
程序清单6.4
sigrot.1
#!/bin/bash
#sigrot.sh
#Version 1.0
#Rotate
signatures
#Suitable to be run via
cron
############################
sigfile=signature
old=$(cat
num)
let new=$(expr $old+1)
if [ -f $sigfile.$new ];
then
cp $sigfile.$new .$sigfile
echo $new >
num
else
cp $sigfile.1 .$sigfile
echo 1 >
num
fi
程序清单6.5
sigrot.2
#!/bin/bash
#sigrot.sh
#Version 2.0
#Rotate
signatures
#Suitable to be run via
cron
############################
sigfile=signature
srcdir=$HOME/doc/signatures
srcfile=$srcdir/$sigfile
old=$(cat $srcdir/num)
let new=$(expr $old+1)
if [ -f $srcfile.$new ];
then
cp $srcfile.$new $HOME/.$sigfile
echo $new > $srcdir/num
else
cp $srcfile.1 $HOME/.$sigfile
echo 1
> $srcdir/num
fi
程序清单6.6
sigrot.3
#!/bin/bash
#sigrot.sh
#Version 3.0
#Rotate
signatures
#Suitable to be run via
cron
############################
sigfile=signature
old=$(cat
num)
let new=$(expr $old+1)
if [ -f $sigfile.$new ];
then
cp $sigfile.$new .$sigfile
echo $new >
num
else
cp $sigfile.1 .$sigfile
echo 1 >
num
fi
return
0;
diff3在列举hunk的同时给出了生成这些hunk所需的一个或多个命令(仍旧使用ed形式).这些命令如下:
.file:la 该hunk出现在第1行后,但在file中不存在这个hunk,所以如果要依据file生成其他文件,必须加入在第1行后这个hunk.
.file:rc 该hunk由file的中第r行组成,因此在生成其他文件时必须对该行进行指定的修改.