svn自动提交丢失的文件

时间:2011-02-18 10:24:25

标签: svn

我想编写一个可以递归自动提交丢失文件的批处理文件。 如何编写批处理命令? 请帮助。

5 个答案:

答案 0 :(得分:10)

使用svn rm $( svn status | sed -e '/^!/!d' -e 's/^!//' )

有关更多命令行颠覆的信息,请参阅http://geryit.com/blog/2011/03/command-line-subversion-practices/

答案 1 :(得分:6)

以下批处理脚本应该SVN删除并提交标记为丢失的所有文件(即在本地删除但不使用SVN删除):

@echo off
svn status | findstr /R "^!" > missing.list
for /F "tokens=2 delims= " %%A in (missing.list) do (
    svn delete %%A && svn -q commit %%A --message "deleting missing files")

缺少的文件由svn status显示,字符为!,例如:

!      test.txt

然后,此脚本使用findstr过滤除丢失文件以外的任何修改。然后将此缺失文件列表写入文件missing.list

接下来,我们使用tokens=2 delims=遍历此文件,从文件中的行中删除!,让我们(希望)只是文件名。获得文件名后,我们会将其传递给svn delete,然后传递给svn commit。随意更改邮件内容。

请注意,我测试了此脚本。特别是,我不知道如果你想要提交的文件之一在其路径中有空格会发生什么,或者如果遇到冲突的一部分会发生什么。将svn deletesvn commit替换为echo svn deleteecho svn commit可能会更好,这样您就可以看到此脚本在您的存储库中放松之前要执行的操作

答案 2 :(得分:0)

只需在工作副本的根目录中执行以下命令:

    svn add . --force
    svn commit -m"Adding missing files"

答案 3 :(得分:0)

ARST,

for /f "usebackq tokens=2*" %i in (svn st ^| findstr /R "^!") do svn del "%i" 

几乎是正确的,但你忘了用括号括起来括起括号:

for /f "usebackq tokens=2*" %i in (`svn st ^| findstr /R "^!"`) do svn del "%i"

感谢简明的命令,无论如何。

答案 4 :(得分:0)

我的工作没什么变化..

@echo off

cd c:\project

for /f "usebackq tokens=2*" %%i in (\`svn st ^| findstr /R "^!"\`) do svn del "%%i %%j" 

然后

svn commit . -m test 

它对我有用。感谢。