CVS导出两个日期之间已更改的所有文件

时间:2012-08-08 02:39:27

标签: batch-file cvs

如何从CVS仅导出特定时间段内已更改(已提交)的文件? 我想这样做,所以我可以发送一个只有已更改的文件(保留目录结构)的“补丁”到客户端,而不是整个代码库。

我发现这个答案(http://stackoverflow.com/a/2343054/421243)给了我一个列表,但有没有办法导出以便我可以在批处理文件中编写脚本?

1 个答案:

答案 0 :(得分:0)

好吧,我不能让这个谎言,所以这里是一个Windows批处理文件解决方案。基本上是:

  • 获取使用cvs diff
  • 更改的文件列表
  • 对于每个列出的文件,从cvs(-N保留目录结构)
  • 导出

<强>代码:

REM Exports only files changed between %DATEFROM% and %DATETO%
REM See CVS -D switch for details on date/time input: http://docs.freebsd.org/info/cvs/cvs.info.Common_options.html

cvs -Q -d %CVSROOT% diff -N -c -D %DATEFROM% -D %DATETO% | grep "Index:" > diff.tmp

echo Extracting changed source files from CVS
for /f "tokens=2*" %%f in (diff.tmp) do (
    echo %MODULE%/%%f
    cvs -Q -d %CVSROOT% export -r HEAD -d %TARGETDIR% -N %MODULE%/%%f  > NUL 2> NUL
)
del diff.tmp