在命令行上进行cvs更新时,如何获得我的cvs冲突的摘要?
时间:2020-03-06 14:36:42 来源:igfitidea点击:
运行cvs update
之后,有没有一种简单的方法来获取冲突摘要?
我正在做一个大型项目,完成一些工作后,我需要进行更新。从cvs update命令返回的更改列表长达几页,我想只看到在cvs update命令输出末尾重复的冲突列表(以" C"开头)。
该解决方案需要从命令行使用。
如果我的正常输出是:
M src/file1.txt M src/file2.txt cvs server: conflicts found ... C src/file3.txt M src/file4.txt M src/file5.txt
我希望我的新输出为:
M src/file1.txt M src/file2.txt cvs server: conflicts found ... C src/file3.txt M src/file4.txt M src/file5.txt Conflict Summary: C src/file3.txt
我希望这是一个单个命令(可能是一个简短的脚本或者别名),该命令在发生冲突时输出正常的cvs输出。
解决方案
我没有方便的CVS,CVS更新输出的确切格式是什么
我似乎记得C <文件名>
如果是这样,我们可以使用:
cvs update | tee log | grep "^C"
cvs的完整输出将保存到日志中,以供另一点使用。
然后我们对所有以'C'开头的行进行grep
希望能有所帮助。
在给出规范的情况下,我们似乎需要对Martin York的解决方案进行较小的修改(因为它仅显示冲突,而不显示常规的日志信息)。像这样的东西可能被称为" cvsupd":
tmp=${TMPDIR:-/tmp}/cvsupd.$$ trap "rm -f $tmp; exit 1" 0 1 2 3 13 15 cvs update "$@" | tee $tmp if grep -s '^C' $tmp then echo echo Conflict Summary: grep '^C' $tmp fi rm -f $tmp trap 0 exit 0
trap命令确保不遗漏日志文件。它分别捕获正常信号HUP,INT,QUIT,PIPE和TERM,0捕获来自外壳的任何其他出口。