执行cvs update
时,您可以获得存储库状态的精彩摘要,例如:
M src/file1.txt
M src/file2.txt
C src/file3.txt
A src/file4.txt
? src/file5.txt
有没有办法在没有实际更新的情况下获得此功能?我知道有cvs status
,但这是详细的说法:
===================================================================
File: file6.txt Status: Up-to-date
Working revision: 1.2
Repository revision: 1.2 /var/cvs/cvsroot/file6.txt,v
Sticky Tag: (none)
Sticky Date: (none)
Sticky Options: (none)
我当然可以制作一个脚本来完成从后者到前者的转换,但似乎浪费时间,因为cvs显然可以产生前者。
答案 0 :(得分:37)
您可以使用-n标志来获取更新输出,而无需实际更新文件。您还可以添加-q(quiet)来抑制任何服务器消息。
cvs -q -n update
答案 1 :(得分:4)
@jmcnamara:好的小费!
此时我一直在使用这个bash脚本:
cvs -q status "$@" | grep '^[?F]' | grep -v 'Up-to-date'
答案 2 :(得分:4)
我有一些别名,可能对某人有用:
alias cvsstatus_command='cvs -q status | grep "^[?F]" | grep -v "Up-to-date" | \
grep -v "\.so" | grep -v "\.[c]*project"'
alias cvsstatus_color='nawk '"'"'BEGIN \
{ \
arr["Needs Merge"] = "0;31"; \
arr["Needs Patch"] = "1;31"; \
arr["conflicts"] = "1;33"; \
arr["Locally Modified"] = "0;33"; \
arr["Locally Added"] = "0;32" \
} \
{ \
l = $0; \
for (pattern in arr) { \
gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); \
} \
print l; \
}'"'"
alias cvsstatus='cvsstatus_command | cvsstatus_color'
这将只显示文件名及其状态,忽略所有最新文件,删除所有eclipse项目文件和共享对象,并且还根据状态(例如,我有橙色用于本地修改;红色用于文件,需要合并;绿色用于本地添加等)
答案 3 :(得分:2)
如果您正在使用CVSNT,您也可以执行cvs status -q
,这也会产生比常规状态命令更简洁的输出(每个文件也只有一行)。使用更新的版本,您甚至可以执行cvs status -qq
,这将跳过最新的文件。