SVN:如何重新创建已创建但尚未提交的目录

时间:2009-02-23 15:30:44

标签: svn directory mkdir

这是一个小SVN问题:

我在本地创建一个目录:

$ svn mkdir output
A         output

我不小心将其删除了:

rm -rf output

现在,我该如何重新创建它?我试过这个:

$ svn mkdir output
svn: 'output' is already under version control

而且:

$ svn revert output
Reverted 'output'

但它仍然没有。

更新:人们建议删除后只需要一个简单的mkdir output即可。但在我的SVN版本中并非如此。它忽略了我也删除了output/.svn目录的事实。当然,只有mkdir output不会带回那个。所以,不知何故,SVN必须参与output目录的重新创建。 (我正在使用SVN 1.4.6。)

4 个答案:

答案 0 :(得分:7)

在SVN中正式删除它:

$  svn rm --force output
svn: 'output' does not exist

然后再次创建它:

$ svn mkdir output 
A         output

上述svn remove的输出有点误导。我认为删除失败了,它不会改变任何东西。

这不是SVN最直观的方法,但这种方式有效。

答案 1 :(得分:2)

只需mkdir output即可。

答案 2 :(得分:1)

您也可以尝试使用mkdir重新创建目录。

svn mkdir创建目录,并且相当于svn add,但只需一步。

因此,您遇到问题的原因是因为已完成“添加”。由于你没有提交,revert将不会执行任何操作,并且svn mkdir将无效,因为Subversion已经列出了用于在下一次提交时添加的目录(因为你的rm不在Subversion中)。

答案 3 :(得分:1)

要理解的是SVN维护的目录与本地文件系统维护的目录之间的区别。

原始帖子中发布的四个命令执行以下操作

  1. 告诉SVN您希望将名为“output”的目录添加到SVN存储库 - 它通过将该信息添加到其“changelist”来响应
  2. 从本地文件系统中删除'output' - SVN不知道发生这种情况
  3. 告诉SVN您希望将一个名为“output”的目录添加到SVN存储库 - 它会抱怨,因为“您已经告诉我了!​​”
  4. 告诉SVN您已经改变了关于添加“输出”目录的想法 - 它必须通过从“更改列表”中删除该信息
  5. 如果你刚发出......

    mkdir output
    

    ...作为你的第三步,一切都会好的 - 使用文件系统删除了目录,因此应该使用文件系统进行恢复。没有理由让SVN参与修复,正如您所发现的那样,尝试这样做只会让事情变得混乱。

    HTH