svn可以“忽略”已删除的文件或从存储库中删除它们吗?

时间:2011-01-05 16:19:12

标签: svn

当我尝试将项目提交给svn时,我遇到了以下问题

svn: '/var/www/sites/blabla/425/file.png' is scheduled for addition, but is missing

这是因为从项目中删除了一些材料(我不能使用svn来删除它)。有没有办法说svn忽略这些文件,或者只是在找不到它们时删除它们?

4 个答案:

答案 0 :(得分:7)

当您执行svn status时,输出将显示任何此类文件“缺少”作为以感叹号开头的行:

!       425/file.png

您应该编写一个脚本(使用您选择的脚本语言或命令行shell)来解析此输出,查找以感叹号开头的行,提取文件名,然后执行svn revert <filename>。然后,这将撤消对该文件的本地更改,从而允许您毫无问题地进行提交。

编辑:既然您在评论中提到了php脚本,我想您熟悉PHP脚本。在这种情况下,您可以使用PHP函数svn_status

edit2 :如果您要从存储库中删除该文件,请改为svn rm --force <filename>

答案 1 :(得分:5)

那么你svn add该文件,但后来又被手动删除了?尝试;

svn rm --force file.png

将其从SVN索引中删除。

答案 2 :(得分:2)

从终端运行以下命令:

svn revert $(svn st | awk 'BEGIN{FS=""} $1=="!" && $2 !~ /\.(sql|log|tmpl)$/ {print $2}')

答案 3 :(得分:1)

适合我:

svn status | grep ^\! | awk '{print $2}' | xargs -L1 svn del --force

如果你的文件名中有空格,我们就不能使用awk,所以我们切换到文件名的开头(你可能要编辑这个:因为idk如果我们必须在每个系统上剪掉9个字符) :

svn status | grep ^\! | cut -c9- | sed 's/ /\\ /g'| xargs -L1 svn del --force