【发布时间】:2010-01-16 00:07:43
【问题描述】:
是否有任何简单的方法来仅显示我的存储库中已在本地添加、删除或修改的文件?我知道我可以键入“cvs stat”并查看文件列表,但这很乏味且容易出错。我想知道是否有更简单的方法。我正在使用 CVS 1.11.17,以防万一。
【问题讨论】:
标签: cvs
是否有任何简单的方法来仅显示我的存储库中已在本地添加、删除或修改的文件?我知道我可以键入“cvs stat”并查看文件列表,但这很乏味且容易出错。我想知道是否有更简单的方法。我正在使用 CVS 1.11.17,以防万一。
【问题讨论】:
标签: cvs
“虚拟”更新将为您提供此信息。
cvs -qn update
所用选项的简短描述:
-q Cause CVS to be somewhat quiet.
-n Do not execute anything that will change the disk.
【讨论】:
diff?
您可以使用 cvs diff 命令获取差异的简短列表:
cvs -q diff --brief
【讨论】:
将其发送至grep!
cvs -Q status | grep -i locally
【讨论】:
这是我使用的:
cvs -Q status | grep -A 4 Locally | egrep -v '^\-\-|^ Working|^ Commit|^$' | awk '{print $2 " " $4}' | sed -e 's/\<Locally\>//;s/revision: \CVS-REPOSITORY-PATH/\t\t/'
输出:
pin_stages.ref
tests/unit/ccsn/pin_stages/pin_stages.ref,v
pin_stages_func.ref
tests/unit/ccsn/pin_stages_func/pin_stages_func.ref,v
【讨论】:
这里是nmake-perl脚本列表修改文件,它是基于上述的cvs update -qn:
DIRS=\
c:\project1\
c:\project2
all: $(DIRS)
!cd $? & cvs -qn update | perl -ne "s!\/!\\!g;print '$?\\'.qq($$1) if /^M (.*)/s;"
【讨论】:
进行 CVS 更新 以 M 开头的文件是修改后的文件。
例子:
CVS Update
cvsntsrv server: Updating dat/idv
M dat/idv/conduct.idv = Modified
...
【讨论】:
作为常用的cvs update -qn 的替代方法,您可以使用cvs release 命令。但是这个是交互式的,并在输出结束时要求确认(所以你只需要中止它!)。正常输出:
> cvs release .
...
U some/updated/file
M some/modified/file
...
You have [1] altered files in this repository.
Are you sure you want to release directory `.': n
** `release' aborted by user choice.
>
在问题Are you sure you want to release directory '.': 之后,您输入的内容与y 或Y 不同。
【讨论】:
您可以使用以下命令获取您在本地修改的文件列表
cvs -qn 更新 | grep "M" | awk '{print $2}'
【讨论】: