在命令行上执行cvs更新时,如何获取我的cvs冲突摘要?
-
02-07-2019 - |
题
运行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输出,然后是冲突摘要。
解决方案
根据规范,您似乎需要对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陷阱来自shell的任何其他出口。
其他提示
我没有cvs方便的cvs update输出的确切格式是什么
我似乎记得C <!> lt; filename <!> gt;
如果是这样,你可以使用:
cvs update |三通日志| grep <!> quot; ^ C <!> quot;
cvs的完整输出保存到日志中以供另一个点使用。 然后我们用'C'开始开始的所有行
希望有所帮助。
不隶属于 StackOverflow