代码之家  ›  专栏  ›  技术社区  ›  Mecki

SVN:你能只从本地签出中删除目录吗(不能从存储库中删除)?

svn
  •  52
  • Mecki  · 技术社区  · 17 年前

    假设您有一个受subversion控制的目录,其中包含一些文件和大量子目录,如下所示:

    file1.txt
    file2.txt
    file3.txt
    dir1/
    dir2/
    dir3/
    dir4/
    :
    dirXX/
    

    svn checkout -N <URL>
    

    svn up

    svn up dir2
    svn up dir4
    

    svn status svn remove

    即使是SVN 1.5的新稀疏目录(“浅签出”)功能在这里也没有用:

    Subversion 1.5的实现 在无限深度的工作副本中 directoryit只会出错。
    http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html

    只需创建签出目录(不带SVN),然后直接从存储库中签出各个子目录作为该目录的子目录即可:现在每个目录都是自己的签出,可以更新,一旦不再需要,您可以删除它。但是,我该如何获取文件(例如file1.txt)?SVN不允许签出单个文件,您只能签出整个目录。

    5 回复  |  直到 17 年前
        1
  •  56
  •   Dave Jarvis James Eichele    7 年前

    我试图做的事情无法用Subversion 1.4或Subversion 1.5完成;期间。

    不过,这可以在Subversion 1.6中完成。

    与SVN 1.5不同,SVN 1.6可以 在目录上

    svn up --set-depth exclude dir2
    


    实际上,SVN 1.6不能像增加深度那样真正减少深度。你可以从任何级别增加到任何更高的级别。您只能将其简化为“排除”(所有级别中的最低级别)。如果你想从“无穷大”(最高)减少到“文件”(中间的某个地方),你必须首先将其减少到“排除”(导致目录消失),然后再次增加到“文件(files)”。这有点像黑客,但效果很好。

        2
  •  37
  •   CodingWithSpike    14 年前

    龟龟SVN ,以下是如何做同样的事情。..

    1. 右键单击您的文件夹 不再想要 已签出(这是您要排除的文件夹)
    2. 在弹出的窗口中,将“更新深度”下拉框设置为“排除”
    3. 单击“确定”。SVN现在将自动从您的驱动器中删除该目录。

        3
  •  10
  •   leoger zOlive    16 年前

    更新:我运行的是SVN 1.6.11,我能够使用 svn up --set-depth empty dir 而不是不得不 exclude

        4
  •  2
  •   slowdog    16 年前

    --set-depth 这就是答案。

    svn switch switch 您现在不需要指向它的子目录,而不是它们的“真实”URL。

        5
  •  1
  •   petr k.    17 年前

    你可以试试这个 trick 涉及本地存储库和svn: 外部依赖 声明。