多个项目/模块的SVN分支模式

多个项目/模块的SVN分支模式,svn,version-control,Svn,Version Control,在阅读了之后,我试图清理我的SVN存储库的结构。讨论在多个项目中使用主干、分支和标记布局 在我的场景中,我为一系列项目维护了多个模块(库、插件和供应商库)。没有一个项目使用所有模块,但每个模块至少由一个项目使用 我是否可以为引用单个模块版本的每个项目创建分支?似乎这就是答案 我如何将其用作项目团队的基线 软件工程人员签出/修改/提交项目的工作流是什么?e、 火箭队的一名成员想给Fred插件添加一个新功能。(布局见下文) 是否应该对模块或项目的功能分支进行初始更改 最后,我希望看到以下存储库结构:

在阅读了之后,我试图清理我的SVN存储库的结构。讨论在多个项目中使用主干、分支和标记布局

在我的场景中,我为一系列项目维护了多个模块(库、插件和供应商库)。没有一个项目使用所有模块,但每个模块至少由一个项目使用

  • 我是否可以为引用单个模块版本的每个项目创建分支?似乎这就是答案

  • 我如何将其用作项目团队的基线

  • 软件工程人员签出/修改/提交项目的工作流是什么?e、 火箭队的一名成员想给Fred插件添加一个新功能。(布局见下文)

  • 是否应该对模块或项目的功能分支进行初始更改

  • 最后,我希望看到以下存储库结构:

    -Library
    | -libFoo
    | | -trunk
    | | -branch
    | | -tags
    | |
    | -libBar
    | | -trunk
    | | -branch
    | | -tags
    | |
    | -plugins
    |   -pluginFred
    |   | -trunk
    |   | -branch
    |   | -tags
    |   | 
    |   -pluginBarney
    |     -trunk
    |     -branch
    |     -tags
    |
    -Projects
      -Galactic
      | -trunk
      | -branch
      | -tags
      |
      -Rocket
        -trunk
        -branch
        -tags
    
    ~z~问候

    我是否可以为引用单个模块版本的每个项目创建分支

    似乎复杂的标签就是答案

    这可能是答案,但从我的角度来看,这将是肮脏的方式。如果您的任何项目都必须将某些模块的某些已知状态作为其树的一部分,并且这些状态也是SVN版本的,那么我更愿意使用(目录类型)将外部源映射到所需的|想要的模块版本。它可以是带有模块标记分支URL的无修订定义(不好,但可提交分支可以,RO标记可以),或任何模块的任何URL

    如何使用复杂标记作为项目团队的基线

    我建议你“不知道”。复杂标记作为临时攻击是好的,但从历史的角度来看是坏的-您将无法重建“在提交之前如何以及从何处创建此混合WC”,与(完全绑定)WC相反,WC具有外部到所有使用的模块

    软件工程人员签出/修改/提交项目的工作流是什么?e、 火箭队的一名成员想给Fred插件添加一个新功能

    嗯,我最初的反应是“视情况而定”,其次是“太宽”。实际上,这更多的是管理和行政问题,而不是技术问题,依赖于人而不是技术问题(而且有很多变化)。简而言之(在理想的美好世界中):

    • TR Dev branching pluginFred,modify,test,将分支合并到pluginFred的主干,再次测试
    • 火箭队PM接受这些更改并同意使用修改后的PluginFed
    • 团队火箭项目中插件的外部定义(在某些版本中)更改为URL@OLDREV到URL@NEWREV(或从
      pluginrefed/**/URL1
      pluginrefed/**/URL2
    • 其他团队也会以某种方式得到通知,并切换(或不切换)到新版本
    团队内部(以及团队之间)良好(快速且防弹)的沟通是工作中最困难的部分。并没有交流,也并没有将外部绑定到WIP,这是导致混乱和开发者地狱的直接途径

    是否应该对模块或项目的功能分支进行初始更改


    “这要看情况”。。。根据习惯、ACL、公司规则、存储库树和跨存储库项目的分离(对于单个单一回购,您可以在任何时间从任何位置向任何位置进行svn复制,跨回购传输稍微困难一些,但仍然是可能的)。但共同点是“有什么区别?”,如果您有完整的可追溯历史记录(如果您没有-您必须有)

    +1感谢您提供了这种非常详细的方法。我需要进一步消化你建议的所有细节,但从高层次的角度来看,这似乎是一个可靠的方法。再次感谢你。