用vimdiff查看cvs管理下的不同版本

cvs diff的展现力太寒酸了,一直想着用vimdiff/gvimdiff取而代之,在网上搜索到一个shell脚本 cvsvimdiff,这个脚本没发比较cvs repository里的两个不同的版本,只能比较当前文件与某一个版本的不同,简单修改了一下,让这个脚本可以比较一个文件的任意两个版本,把脚本贴在这里:

#!/bin/bash
#
# Copyright (C) 2005-2006,
#   Stefano Zacchiroli  <zack@cs.unibo.it>
#   Enrico Tassi    <tassi@cs.unibo.it>
#
# This is free software, you can redistribute it and/or modify it under the
# terms of the GNU General Public License version 2 as published by the Free
# Software Foundation.
#
 
vimdiff="vimdiff"
suffix="vimcvsdiff"
rev1="HEAD"
 
if [ "$1" == "-g" ] ; then
  vimdiff="gvimdiff -f"
  shift 1
fi
if [ "$1" == "-r" ]; then
  rev1="$2"
  shift 2
fi
if [ "$1" == "-r" ]; then
  rev2="$2"
  shift 2
fi
 
files="$1"
if [ -z "$files" ]; then
  files=$(cvs -n update -r HEAD 2> /dev/null | grep -e "^[MU]" | cut -c 3-)
fi
for f in $files; do
  if ! [ -f $f ]; then break; fi
  patch=`mktemp $prefix.XXXXXX`
  orig=`mktemp $prefix.XXXXXX`
  trap "rm -f $patch $orig" EXIT
 
  if ! [ -z "$rev2" ]; then
    tmp1=$f.$rev1
    tmp2=$f.$rev2
    cvs up -p -r $rev1 $f > $tmp1
    cvs up -p -r $rev2 $f > $tmp2
    $vimdiff $tmp1 $tmp2
    rm -f $tmp1 $tmp2
  else
    cp "$f" $orig
    cut -d '/' -f 2 < CVS/Entries | grep "^$f/$" > /dev/null || break
    cvs diff -r $rev1 -u "$f" > $patch
    if ! [ $? -eq 1 ]; then break; fi
    cp "$f" $orig
    patch -R -p0 $orig $patch
    $vimdiff $orig $f
  fi
done
 

下面这一段是我加的,丑陋是丑陋了一点,但能工作,:)
    tmp1=$f.$rev1
    tmp2=$f.$rev2
    cvs up -p -r $rev1 $f > $tmp1
    cvs up -p -r $rev2 $f > $tmp2
    $vimdiff $tmp1 $tmp2
    rm -f $tmp1 $tmp2

使用方法:
cvsvimdiff -r ver1 -r ver2 file_name
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

俞凡 DeepNoMind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值