0

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

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

4

1 回答 1

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
于 2012-08-08T23:32:44.650 回答