svn update:我可以迭代结果吗?
我在脚本(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更新中迭代结果列表,在工作文件夹中找到这些文件并将它们复制到更改文件中。
您可以找到很容易地更新文件:
svn up | findstr /r /c:"^U"
您可以通过的,输出与for
命令迭代:
for /f "tokens=2* delims= " %%x in ('svn up ^| findstr /r /c:"^U"') do copy "%%x" change
谢谢,已经在那里使用的所有命令读了,目前正在设法得到这个工作: 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
对“copy”参数的引用应该足够了。对不起,我忘了他们。尽管现在不能在这里用带空格的文件名来测试,但'for'语句应该可以正常工作。 – Joey 2009-12-07 12:26:18
道歉回答我的问题,这不仅是还部分答案,但这是我目前的位置。
首先,空间的问题不仅仅在于%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个心目中的回答是否开始这是一个新的问题,现在我已经打上这个...无论如何,所有帮助感激地收到
我很困惑;你需要通过'svn update'或checkout来完成吗?如果它是更新的,就像你说的那样,你可以得到清单并按照你的意愿去做(我不确切知道在DOS中如何,但是......)那就是你问的问题:如何在DOS下做到这一点?或者一般来说如何得到清单? – 2009-12-07 10:27:10
是的,我想怎么在DOS下做的是我的问题,遗憾的混乱 – DannykPowell 2009-12-07 11:52:49