【问题标题】:SVN: How to re-create a directory that's created but not committed yetSVN:如何重新创建已创建但尚未提交的目录
【发布时间】:2010-10-09 08:17:34
【问题描述】:

这里有一点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。)

【问题讨论】:

    标签: svn directory mkdir


    【解决方案1】:

    在 SVN 中正式删除:

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

    然后重新创建:

    $ svn mkdir output 
    A         output
    

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

    这不是 SVN 最直观的方法,但它确实有效。

    【讨论】:

    • svn: 'output' does not exist 我认为更像是一个警告,'svn rm' 确实删除了丢失的目录。据我所知,这里不需要 --force 参数
    【解决方案2】:

    只需mkdir output 就足够了。

    【讨论】:

      【解决方案3】:

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

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

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

      如果您只是发布...

      mkdir output
      

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

      HTH

      【讨论】:

      • 等等,.svn 子目录呢?在那种情况下,那将丢失。我删除了由 SVN 创建的目录,然后在其中放置了一个没有 .svn 的新目录。我认为这行不通。
      • @Dehmann,您确实是正确的。一个很好的例子是我在发布之前没有充分考虑我的答案。但是,我确实希望您现在能够理解 SVN 操作和文件系统操作之间的区别。以后,当您进入第 2 步时,只需执行第 4 步和第 1 步即可恢复情况。
      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-23
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        • 1970-01-01
        • 1970-01-01
        • 2011-11-04
        • 1970-01-01
        相关资源
        最近更新 更多