当我尝试将项目提交给svn时,我遇到了以下问题
svn: '/var/www/sites/blabla/425/file.png' is scheduled for addition, but is missing
这是因为从项目中删除了一些材料(我不能使用svn来删除它)。有没有办法说svn忽略这些文件,或者只是在找不到它们时删除它们?
答案 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