【问题标题】:Moving svn folders to own repository将 svn 文件夹移动到自己的存储库
【发布时间】:2012-05-07 12:01:56
【问题描述】:

我有一个一直在扩展和扩展的存储库。现在我正在清理它并希望将每个项目移动到单独的存储库。我目前的设置:

[ProjectRepo]
- Projects
  - Software1
    - trunk (VS2010 solution inside here)
      - .sln
      - vs project #1
      - vs project #2
      - vs project #3      
    - branches
    - tags
  - Software2
    - trunk (VS2010 solution inside here)
      - .sln
      - vs project #1
      - vs project #2
      - vs project #3      
    - branches
    - tags
  - Shared
    - shared component #1 (vs project)
      - trunk
      - branches
      - tags
    - shared component #2 (vs project)
      - trunk
      - branches
      - tags

现在我想将每个项目和每个解决方案移动到主干目录中自己的存储库。我一直在尝试使用 svnadmin dump 和 svndumpfilter,但问题是节点路径仍然像旧结构一样。如何获得以下结构?

[Software #1 Repo]
- trunk
- branches
- tags

[Software #2 Repo]
- trunk
- branches
- tags

[Shared Component #1 Repo]
- trunk
- branches
- tags

【问题讨论】:

  • 将项目移动到不同的仓库有什么好处?通常将所有代码放在一个仓库中会更方便。
  • 我们在软件的几个部分之间共享组件。在我看来,在单独的存储库中将某个标签绑定到修订版更容易......或者你对此有不同的看法?
  • 查看 svn:external 属性,了解如何处理共享组件的依赖关系:svnbook.red-bean.com/en/1.7/svn.advanced.externals.html
  • 我们目前正在使用 svn:externals,但是当您标记使用与组件相关的修订而不是整个存储库的总体修订号时,不是更容易/更好吗?
  • 根据我的经验,这只是习惯问题。此外,维护多个存储库会增加用户管理(需要管理更多访问权限和密码文件)、备份策略的复杂性,并且难以在软件 2 中重用软件 1 的一部分,以防这种情况发生。

标签: svn svnadmin svndumpfilter svndump


【解决方案1】:

如果您能够使用 svndumpfilter 成功过滤项目(如果项目之间存在任何“交互”,例如复制或合并,我认为这是不可能的),那么您可以使用旧结构创建新的存储库,然后通过 svn copy 和 svn delete 创建新结构(即复制 Software1Repo/Projects/Software1/trunk 到 Software1Repo/trunk,然后 svn delete 等)。

【讨论】:

    猜你喜欢
    • 2012-04-15
    • 1970-01-01
    • 2013-01-02
    • 2010-09-30
    • 2018-05-15
    • 2010-10-30
    • 2011-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多