SVN:如何重新创建一个';已创建但尚未提交

SVN:如何重新创建一个';已创建但尚未提交,svn,directory,mkdir,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后,一个简单的m

这里有一个小小的
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后,一个简单的
mkdir输出就足够了。但在我的SVN版本中,情况并非如此。它忽略了一个事实,即我也删除了一个
output/.svn
目录。当然,仅仅是
mkdir输出
并不能恢复该输出。因此,无论如何,SVN必须参与到
输出
目录的重新创建中。(我正在使用SVN 1.4.6。)

在SVN中正式删除它:

$  svn rm --force output
svn: 'output' does not exist
然后再次创建它:

$ svn mkdir output 
A         output
上面
svn remove
的输出有点误导。我认为移除失败了,它不会改变任何事情


这不是SVN最直观的方法,但它是这样工作的。

只要
mkdir输出就足够了。

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

svn mkdir
创建目录,并执行与
svn add
等效的操作,但只需一步


因此,您遇到问题的原因是因为“添加”已完成。由于您没有提交,revert将不起任何作用,
svn mkdir
将不起作用,因为Subversion已经列出了要在下次提交时添加的目录(因为您的
rm
在Subversion之外).

要了解这一点,需要区分SVN维护的目录和本地文件系统维护的目录

在您最初的帖子中发布的四个命令执行以下操作

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

    mkdir output
    
    。。。在第三步中,一切都会很好-目录是使用文件系统删除的,因此应该使用文件系统恢复。没有理由让SVN参与修复,正如您所发现的,尝试这样做只会让事情变得混乱


    HTH

    等等,但是.svn子目录呢?如果那样的话,那就没有了。我删除了由SVN创建的目录,并在其中放置了一个没有.SVN的新目录。“我认为那是行不通的。”德尔曼,你说得对。我在发帖前没有充分考虑我的答案,这是一个很好的例子。但是,我确实希望您现在能够理解SVN操作和文件系统操作之间的区别。以后,当您进入步骤2时,只需执行步骤4和1即可恢复情况。svn:“output”不存在更像是一个警告,我认为,“svn rm”确实会删除丢失的目录。据我所见,这里不需要--force参数