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参数