2009-12-07 67 views
2

我在腳本(Windows腳本.cmd文件)中使用svn。svn update:我可以迭代結果嗎?

當前它將所有文件檢出到一個文件夾,然後迭代該文件夾,將所有文件作爲構建過程的一部分添加到主文件中。喜歡的東西:

svn checkout --username %username% %SVNURL% %workingfolder% 
FOR %%i IN (%workingfolder%\*.*) DO TYPE %%i >> %DESTFILE% 

我想換做什麼建立後inital版本是產生「改變」的文件,只包括了文件自上次生成以來已發生變化。

我可以使用svn 更新命令而不是結帳,這給我一個正在更新的文件列表。 svn update Reference (svnbook.red-bean.com)

我想要做的是從svn更新中迭代結果列表,在工作文件夾中找到這些文件並將它們複製到更改文件中。

+0

我很困惑;你需要通過'svn update'或checkout來完成嗎?如果它是更新的,就像你說的那樣,你可以得到清單並按照你的意願去做(我不確切知道在DOS中如何,但是......)那就是你問的問題:如何在DOS下做到這一點?或者一般來說如何得到清單? – 2009-12-07 10:27:10

+0

是的,我想怎麼在DOS下做的是我的問題,遺憾的混亂 – DannykPowell 2009-12-07 11:52:49

回答

0

您可以找到很容易地更新文件:

svn up | findstr /r /c:"^U" 

您可以通過的,輸出與for命令迭代:

for /f "tokens=2* delims= " %%x in ('svn up ^| findstr /r /c:"^U"') do copy "%%x" change 
+0

謝謝,已經在那裏使用的所有命令讀了,目前正在設法得到這個工作: FOR/F「令牌= 2 * delims =」%在%×( '%SVNExecutable%SVN高達--username user.name%SVNURL%%procsfolder%^ | FINDSTR/R/C: 「^ U」')做ECHO %% X 問題是,%SVNExecutable%包括空間在路徑(程序文件),所以這個錯誤('C:\ Program'無法識別....)。嘗試過關於%SVNExecutable%的評論,但這不起作用......任何方式,我認爲你的回答是正確的,所以謝謝,感激地收到任何進一步的幫助:我怎麼能逃脫這個空間? – DannykPowell 2009-12-07 11:51:09

+0

對「copy」參數的引用應該足夠了。對不起,我忘了他們。儘管現在不能在這裏用帶空格的文件名來測試,但'for'語句應該可以正常工作。 – Joey 2009-12-07 12:26:18

0

道歉回答我的問題,這不僅是還部分答案,但這是我目前的位置。

首先,空間的問題不僅僅在於%SVNExecutable%中的文件路徑,問題在於命令中的空格。

解決這個問題的方法(適用於Windows XP)是使用有usebackq開關,並使用反引號`,而不是正常的報價。利用這一點,我已經成功地得到了svn update命令工作:

for /f "usebackq tokens=2* delims= " %%x in (`%SVNExecutable%svn up --username %username% %SVNURL% %workfolder%`) do ECHO "%%x" 

這個更新的測試文件,並從最初的更新結果:

U full\path\to\file\file.sql 
Updated to revision 36793. 
Summary of conflicts: 
Skipped paths: 1 

由此產生的結果是:

"full\path\to\file\file.sql" 
"to" 
"of" 
"paths:" 

我無法工作的最後一塊拼圖是findstr和正則表達式。當我加入這個拿過來,試試這個:

for /f "usebackq tokens=2* delims= " %%x in (`%SVNExecutable%svn up --username %username% %SVNURL% %workfolder% ^| findstr /r /c:"^U"`) do ECHO "%%x" 

我得到這個錯誤:

The filename, directory name, or volume label syntax is incorrect. 

在2個心目中的回答是否開始這是一個新的問題,現在我已經打上這個...無論如何,所有幫助感激地收到