2009-12-07 98 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个心目中的回答是否开始这是一个新的问题,现在我已经打上这个...无论如何,所有帮助感激地收到