svn基于我的目录自动更新,无需手动“svn rm ...”

时间:2010-08-10 18:00:46

标签: svn

是否有svn命令告诉存储库在repo中自动“rm”存在于repo中但不在我的目录中的文件?

一点解释:

我在谷歌代码上托管了我自己的项目。在我的本地目录中,我删除了许多文件。现在,我想提交。但是,我不记得我删除了哪些文件。找出来似乎很麻烦(通过例如备份我的目录,更新目录,差异dirs,然后生成一个文件列表到“svn rm f1 f2 ......”)

我知道在svn中删除文件的正确方法是首先调用“svn rm fname”,这将删除该文件。但长话短说......我有上述情况。

5 个答案:

答案 0 :(得分:2)

我刚在Mac OS X系统上尝试了以下操作,它似乎有效:

$ svn status -q | grep '! ' | awk '{ print $2 }' | xargs svn rm

这不会提交任何内容,只需为您发出svn rm命令。希望这有帮助!

编辑:正确处理名称中带空格的文件(例如“My text file.txt”),但它应该适用于无空白文件名。

答案 1 :(得分:2)

应该工作。使用风险由您自己承担 - 在运行之前更好地创建备份:

svn st | grep "^!" | gawk '{print $2}' | xargs svn rm

答案 2 :(得分:1)

不是我知道的。

svn status概述了工作目录的当前状态。文件前缀为!丢失(删除,但不是svn rm'd)。

答案 3 :(得分:1)

如果您提交了工作副本的根文件夹,Subversion应该注意到工作副本中缺少这些文件。至少TortoiseSVN也提供从repo中删除这些文件 - 我不知道命令行客户端如何处理它。

答案 4 :(得分:0)

你可以完成svn,选择列表然后svn恢复文件。