2009-02-23 116 views
3

这里有一个小SVN问题目录: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。)

回答

7

在SVN正式将其删除:

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

然后重新创建它:

$ svn mkdir output 
A   output 

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

这不是SVN最直观的方法,但这种方式可行。

+0

的svn:“产出”不存在更是一个警告,我认为,“SVN RM”确实删除丢失的目录。 从我看到的,--force参数在这里不是必要的 – 2009-02-23 20:53:47

2

只要mkdir output应该已经足够了。

+0

我认为这是不对的 - 请参阅我的更新。 – Frank 2009-02-23 21:08:16

1

您也可以尝试重新创建目录,只需mkdir

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

所以你有问题的原因是因为“添加”完成。既然你没有提交,恢复将什么都不做,并且svn mkdir将不起作用,因为Subversion已经列出了在下一次提交时添加的目录(因为你的rm在Subversion之外)。

1

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

的四个命令,在原始帖子发出后,请执行下列操作

  1. 告诉SVN你希望一个名为“输出”目录添加到SVN存储库 - 它通过添加信息的响应“变更表“
  2. 取出‘输出’从本地文件系统 - SVN不知道这个正在发生的
  3. 告诉SVN你希望一个名为目录添加‘输出’到SVN仓库 - 它抱怨,因为”你已经告诉我了!​​“
  4. 告诉SVN你已经改变了主意有关将“输出”目录 - 它要求,通过其“修改列表”

如果你只是简单地发出删除该信息...

mkdir output 

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

HTH

+0

等待,但.svn子目录呢?在那种情况下,这将会失去。我删除了由SVN创建的目录,并在其中添加了一个没有.svn的新目录。我认为这不会起作用。 – Frank 2009-02-23 16:08:57

相关问题