svn自动提交丢失的文件

svn自动提交丢失的文件,svn,Svn,我想写一个批处理文件,可以自动提交丢失的文件递归。 如何编写批处理命令? 请提供帮助。只需在工作副本的根目录中执行以下命令: svn add . --force svn commit -m"Adding missing files" 以下批处理脚本应SVN删除并提交标记为丢失的所有文件(即本地删除但不使用SVN delete): 缺少的文件由带有字符的svn status显示,例如: ! test.txt ! test.txt 然后,此脚本将用于过滤掉除丢失

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

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

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

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

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

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

接下来,我们遍历这个文件,使用
tokens=2 delims=
删除
从文件中的行,留给我们(希望)只有文件名。获得文件名后,我们将其传递给
svn delete
,然后
svn commit
。请随意更改消息的内容

请注意,我没有测试这个脚本。特别是,我不知道如果您希望提交的某个文件的路径中有一个空间会发生什么,或者如果您在提交过程中遇到冲突会发生什么。最好将
svn delete
svn commit
替换为
echo svn delete
echo svn commit
,这样您就可以在将此脚本发布到存储库之前看到它将要执行的操作。

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

有关更多命令行subversion的信息,请参见

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"

无论如何,谢谢你简洁的命令。

我的工作没有什么变化

@echo off

cd c:\project

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


它对我有用。谢谢。

丢失的文件是什么?来自另一个分支的东西,在那里你将
合并
?某些尚未提交的内容,您要在其中添加
?是哪一个?链接图像显示了我从本地删除的文件,但我想通过命令行将其提交给SVN@Linus:缺少的文件是那些已在本地删除但未使用SVN delete的文件@Arst:您是否正在寻找一个脚本,它将SVN删除然后SVN提交所有丢失的文件?你不能用SVN删除文件而不是本地删除它们吗?谢谢你的回答。有可能不写入文件吗?我不确定您是否可以在命令输出上使用
for
循环。我似乎记得以前尝试过,也没有成功。这就是为什么我将
for
循环之前的行的输出写入一个文件。如果您不想让
missing.list
文件挂起,您可以始终将
del missing.list
添加到批处理脚本的末尾。对于/f“usebackq tokens=2*”%i in(
svn st^ findstr/R“^!”
)根据您的帖子执行svn del“%i”操作,我如上所述对其进行了修改。@Arst:您似乎确实是这样对命令的输出运行
for
循环的。看起来你的batch fu比我的要好:)这会添加新文件,但不会从SVN中“删除”已从工作副本中删除的文件。有人知道。。什么是sed?它是Unix命令,除非您使用Cygwin@stevek_mcc抢手货非常感谢。
@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