CVS:显示本地更改的文件
有没有简单的方法来显示只在我的资源库中的文件已被本地添加,删除或修改? 我知道我可以input“cvs stat”并查看文件列表,但是这很枯燥且容易出错。 我想知道是否有一个更简单的方法。 我正在使用CVS 1.11.17,以防万一。
一个“虚拟”更新会给你这个信息。
cvs -qn update
所用选项的简短说明:
-q Cause CVS to be somewhat quiet. -n Do not execute anything that will change the disk.
您可以使用cvs diff
命令获得一个简短的差异列表:
cvs -q diff --brief
pipe它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 update | grep“M”| awk'{print $ 2}'