如何从存储库中删除所有已删除的文件?

ane*_*yzm 48 svn

我有一个脚本,我在其中添加所有新文件,然后使用以下行将我的工作副本提交到我的存储库:

svn status | grep ^\? | awk '{print $2}' | xargs svn add
Run Code Online (Sandbox Code Playgroud)

我现在想添加一行从存储库中删除我工作副本中的所有已删除文件.换句话说,我不能逐个指定它们,我需要用svn状态检测它们然后自动删除它们.但是这条线不起作用.

svn status | grep ^\! | awk '{print $2}' | xargs svn --force delete
Run Code Online (Sandbox Code Playgroud)

如你所见,我已经取代了

" ?"与" !"和

" add"与" --force delete"

你能告诉我它为什么不起作用吗?

PS.我知道这是一个危险的程序.我已经讨论了所有这些.谢谢

谢谢

Dav*_* W. 61

我刚试过这个,它完美无缺.

$ svn st | grep '^!' | awk '{print $2}' | xargs svn delete --force
D         groups.pl
D         textblock.pl
Run Code Online (Sandbox Code Playgroud)

您的文件名称中是否有空格?

等一等!!我看到了问题.你有:

svn --force delete
Run Code Online (Sandbox Code Playgroud)

并不是:

svn delete --force
Run Code Online (Sandbox Code Playgroud)

--forcedelete命令的参数,而不是svn命令.

  • 这不适用于带有空格和特殊字符的文件。anton_rh的回答确实如此。 (2认同)

nai*_*rch 42

我也找到了另一种解决方案.

svn status | grep '^\!' | sed 's/! *//' | xargs -I% svn rm %
Run Code Online (Sandbox Code Playgroud)

我在http://donunix.blogspot.de/2009/02/svn-remove-all-deleted-files.html上看过它

  • 谢谢!它甚至可以在文件名中使用空格:) (3认同)
  • !惊人的。特别解决了我的姓名空格问题。 (2认同)
  • 伟大的剧本.也适用于空格 (2认同)

ant*_*_rh 7

svn status | grep '^!' | sed 's/! *//' | xargs -d '\n' svn delete --force
Run Code Online (Sandbox Code Playgroud)

该解决方案适用于包含空格和特殊字符的文件名.

  • svn status - 列出所有更改,删除的文件标记为 !
  • grep '^!'- 提取以!(即删除的文件)开头的行
  • sed 's/! *//'- 删除!开头的-char和后面的空格
  • xargs -d '\n' - 将每个输入行(包括空格和特殊字符)视为单独的参数并将它们传递给 svn delete --force