ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
注:而2路hunk则在"===="后加上1,2或3来指出引起不同的那个文件.

$diff3 sigrot.2 sigrot.1 sigrot.3
产生如下的输出(在这里因为空间的原因对输出做了截断):
  ====
  1:3c
    #Version 2.0
  2:3c
    #Version 1.0
  3:3c
    #Version 3.0
  ====1
  1:9,10c
    srcdir=$HOME/doc/signatures
    srcfile=$srcdir/$sigfile
  2:8a
  3:8a
  ====1
  1:12c
    old=$(cat $srcdir/num)
  2:10c
  3:10c
    old=$(cat num)
  ...
第一个hunk是3路hunk,其他的都是2路hunk.从sigrot.1或sigrot.3中生成sigrot.2时,必须把从sigrot.2中来的下面两行添加到sigrot.1或sigrot.3的第8行后:
  srcdir=$HOME/doc/signatures
  srcfile=$srcdir/$sigfile
类似地,若要依据sigrot.2来生成sigrot.1,必须把sigrot.1的第10行改为sigrot.2中来的第12行.

可以使用-m或--merge选项来告诉diff3对文件进行合并,然后再手工对结果排序:
$diff3 -m sigrot.2 sigrot.1 sigrot.3 > sigrot.merged

程序清单6.7 使用diff3合并选项产生的输出
  #!/usr/local/bin/bash
  #sigrot.sh
  <<<<<<< sigrot.2
  #Version 2.0
  |||||||sigrot.1
  #Version 1.0
  =======
  #Version 3.0
  >>>>>>> sigrot.3
  #Rotate signatures
  #Suitable to be run via cron
  ############################

  sigfile=signature
  srcdir=$HOME/doc/signatures
  srcfile=$srcdir/$srcfile

  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

  return 0

"<<<<<<<"标记对应myfile,">>>>>>>"对应yourfile,"|||||||"对应oldfile.在本例中,只需要最新的版本号,为了成功合并3个版本,将删除标记行和1.0及2.0版本指定的行.
posted on 2005-08-04 17:19 ivaneeo 阅读(342) 评论(0)  编辑  收藏 所属分类: GNU牛力

只有注册用户登录后才能发表评论。


网站导航: