Pre*_*gha 7 mercurial branch code-organization
场景:各种产品组成了较小的项目.dev,release和maintennace(bug/patch/minor release)中每个产品的几个不同版本.
大多数团队使用各种第三方工具和库来开发和发布(常见的两个是XUnit for dev,以及AutoMapper in product).他们是控制这些工具/库的版本的粉丝.
我似乎无法理解在mercurial中组织结构的最佳方法.在中央SVN风格中,我通过将第三方工具作为他们自己的项目进行组织,然后为可以获取其他项目的输出的项目创建小型构建,然后通过构建的发布项目来构建建成的项目.一切都在层次结构中,
(开发部门)
Root/dev/ProjectX/
Root/dev/ProjectY/
Root/dev/ThirdParty/XXX -- could be a 3rd party lib
Root/dev/ThirdParty/YYY -- could be a 3rd party lib
Run Code Online (Sandbox Code Playgroud)
(分支1)
Root/release1/ProjectX/
Root/release1/ProjectY/
Root/release1/ThirdParty/XXX
Root/release1/ThirdParty/YYY
Run Code Online (Sandbox Code Playgroud)
(分支2)
Root/release2/ProjectX/
Root/release3/ProjectY/
Root/release2/ThirdParty/XXX
Root/release2/ThirdParty/YYY
Run Code Online (Sandbox Code Playgroud)
等等
由于开发人员保持他们的机器最新(使用NUGET包管理器)的方式,第三方项目都必须在ThirdParty文件夹中以确保开发人员不必拥有这些的多个副本每个项目的图书馆.
我的问题是:
如果他们实现mercurial应该在这里实现一个simmilar策略(大回购)和克隆/分支,或者他们应该在项目级别分解存储库并克隆/分支这些.在后一种情况下,他们会有产品/版本分支/回购?我知道如果长期工作效果更好,他们更喜欢分布式模型,即使最初学习新工作流程的难度很大.
我已经阅读了http://nvie.com/posts/a-successful-git-branching-model/和一些文章,但我仍然不确定如何组织.
基本上,您为每个产品,每个项目和每个第三方库单独创建一个repo,然后在子库中适当地组合它们.在您的中央服务器(或服务器)上,我可能会建立一个像这样的裸存储库结构:
products/ProductA/
ProductB/
ProductC/
projects/ProjectA/
ProjectB/
ProjectC/
thirdparty/ThirdPartyA/
ThirdPartyB/
ThirdPartyC/
Run Code Online (Sandbox Code Playgroud)
这样,您的中央服务器上只有一个每个repo的副本.您不需要为每个分支创建单独的repos,因为mercurial可以在一个存储库中保存多个分支.
然后,当有人在其本地存储库中签出产品时,您可以使用subrepo机制来检查相应项目和第三方库的工作树.在本地磁盘上,结构将如下所示:
ProductA/
ProjectA/
ProjectB/
ThirdParty/
ThirdPartyC/
Run Code Online (Sandbox Code Playgroud)
这看起来与中央服务器上的不同,因为您没有工作树,只有指向子项目的指针.
归档时间: |
|
查看次数: |
532 次 |
最近记录: |