2012-08-08 66 views
0

如何從CVS僅導出在特定時間段內更改(提交)的文件? 我想這樣做,所以我可以只發送已修改文件(保留目錄結構)到客戶端的「補丁」,而不是整個代碼庫。CVS導出在兩個日期之間發生更改的所有文件

我發現了這個答案(http://stackoverflow.com/a/2343054/421243),它給了我一個列表,但有沒有辦法導出,以便我可以在批處理文件中編寫腳本?

+0

難道一個實際的補丁就足夠了嗎?即。 'cvs rdiff -D date1 -D date2' – 2012-08-09 21:57:44

+0

這可能就足夠了,但是看起來更容易,更不容易出錯,可以讓客戶端解壓縮代碼庫而不是應用補丁文件。 – 2012-08-10 04:10:17

回答

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 
+0

如果你打開文件列表,你可以通過一次調用cvs來完成,而不是循環中的多次調用。在Linux上,我會使用'xargs'。不確定Windows上的等效物是什麼。 – 2012-08-10 07:17:57

相關問題