svn:忘记删除的文件

时间:2010-01-08 00:46:34

标签: svn

我在svn工作副本中做了以下内容:

sheep@sheepbox# gvim Dual_On_Off_Model.h
sheep@sheepbox# gvim Dual_On_Off_Model.cpp
(... made the files, saved them ...)
sheep@sheepbox# svn add Dual_On_Off_Model.*
sheep@sheepbox# svn st
M    Multiple_On_Off_Model.h
A    Dual_On_Off_Model.h
A    Dual_On_Off_Model.cpp
sheep@sheepbox# rm Dual_On_Off_Model.*    <- Stupid on my part, but discovered
                                          <-  I didn't need the class

所以后来:

sheep@sheepbox# svn st
M    Multiple_On_Off_Model.h
!    Dual_On_Off_Model.h
!    Dual_On_Off_Model.cpp
sheep@sheepbox# svn commit
svn: Commit failed (details follow):
svn: '/home/sheep/src/secret_project_x/trunk/superduperd/Dual_On_Off_Model.h' is
scheduled for addition, but is missing

基本上,我在不使用svn rm的情况下从工作副本中删除了文件,现在svn很生气,因为它无法找到文件。

由于我不需要Dual_On_Off_Model。*并且他们现在已经去了天空中的大硬盘,有没有办法在工作副本上使用Jedi mind trick让它停止对我大喊大叫?

4 个答案:

答案 0 :(得分:6)

只需重新添加文件(或带有这些名称的空文件),然后使用svn rm删除它们。

答案 1 :(得分:5)

编辑之间:

使用:

svn revert -R .

它将恢复为您拥有的本地副本的svn修订版。

答案 2 :(得分:2)

svn revert *失败,因为*扩展到目录中的每个文件,并且您需要还原不再在目录中的文件。请改为svn revert Dual_On_Off_Model.h Dual_On_Off_Model.cpp

要完全恢复一切,你可以使用一点bash-fu:

svn status | awk '{print $2}' | xargs svn revert

svn status输出的每一行中取出第二个单词(假设你的文件名中没有空格......),然后将这些作为参数传递给svn revert

答案 3 :(得分:0)

我的灵感来自Josh Kelley的回答:

svn st | awk '$1 == "!" {print $2}' | xargs svn revert

应修复出现此问题的整个树。