【问题标题】:Repository organization and selective checkout存储库组织和选择性签出
【发布时间】:2010-03-17 19:02:48
【问题描述】:

我正在使用 TortoiseSVN,并且我有一个以这种方式组织的 SVN 存储库:

folder1
  folder2
    trunk
    tag
    branches
  folder3
    trunk
    tag
    branches
  folder4
    folder5
      trunk
      tag
      branches

我想知道是否有办法只签出主干目录,将整个树保持在版本控制之下:

folder1
  folder2
    trunk
  folder3
    trunk
  folder4
    folder5
      trunk

通过这种方式,我可以在folder1 上使用单个更新命令更新所有主干,而无需更新可能充满数据的标签和分支。

【问题讨论】:

    标签: svn tortoisesvn


    【解决方案1】:

    这个问题一直困扰着我,我破解了它:)

    svn up --set-depth empty branches
    svn up --set-depth empty trunk
    

    随后调用父目录中的svn update 不会更新这些目录,也不会调用svn commit

    如果您要重新检查一下,您可以:

    svn co --depth empty <folder1 svn url>
    cd folder1
    svn up --depth empty folder2
    cd folder2
    svn up trunk
    

    然后对每个folder3folder4 重复

    【讨论】:

    • 对于未来的读者:上方的 --depth 和 --set-depth 标志是“稀疏目录”标志,在其他答案中注明(如前所述,仅可用在 Subversion 1.5+ 中)。
    【解决方案2】:

    请注意,sparse checkouts 通常是可行的方法,但是 Subversion 不允许您与 --reintegrate 选项合并。

    这听起来可能是一个小问题(例如,如果您是单用户),但您确实应该考虑一下并使用适当的存储库结构。

    您提到的存储库结构也不允许同时标记或分支所有项目。

    【讨论】:

      【解决方案3】:

      最接近和最简单的可能是sparse checkouts。那会给你

      folder1
        folder2
          trunk
            A
            B
            C
            ...
          tag
          branch
        folder3
          trunk
            A
            B
            C
            ...
          tag
          branch
        folder4
          folder5
            trunk
            A
            B
            C
            ...
            tag
            branch
      

      以及一次性更新所有内容的能力。

      或者您使用externals 来执行此操作。在您的存储库中创建一个新文件夹,该文件夹除了引用其他中继之外什么都不做。

      【讨论】:

        【解决方案4】:

        有两种方法可以做到这一点。

        1. 将不需要的目录切换为空目录。为此,您必须在存储库中的某处有一个空目录。然后你首先检查整棵树,然后再做
        svn switch svn://foo/bar/path/to/empty/dir folder1/folder2/tags
        svn switch svn://foo/bar/path/to/empty/dir folder1/folder2/branches
        

        等等

        1. 从1.5开始,可以使用sparse directories

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-31
          • 1970-01-01
          • 1970-01-01
          • 2011-08-16
          • 1970-01-01
          • 1970-01-01
          • 2021-07-11
          • 1970-01-01
          相关资源
          最近更新 更多