我有超过10年的软件项目,我想向Hg承诺。
这是针对与Delphi 7相关的代码,包括第三方许可库,使用svn管理的开源库,以及我自己的代码(我计划迁移到Delphi XE5)。
第三方和svn派生的lib通常在Delphi IDE中安装了组件,并且应保存在"最新的"版本(作为回滚通常会使IDE出现问题),所以我只是备份它们(它们是svn外部,从未得到回滚)。
我的布局如下:
-Licensed
|-(third party libs)
...
-SVNRoot
|-(various open source from svn)
...
-CodeRoot
|
|-common (common to all projects)
|
|--major1
| |
| |-common (common to the major1 software)
| |
| |-Cust1 (projects for customer1)
| | |
| | |-C1Proj1
| | |
| | |-C1ProjN
| |
| |-Cust2
| |
| |-C2Proj1
| |
| |-C2ProjN
|
|--major2
| |
... ...
即#"普通"包含我通常包含在所有项目中的代码的文件夹,无论它们在何处部署。
然后按主要产品细分,由客户定制子项目。
我已经阅读了各种教程,但我似乎错过了一些东西......
我看到如何通过移动到.. \ CodeRoot并运行Hg Init,将CodeRoot下的所有内容添加到本地存储库。
我不清楚,我很高兴将所有内容都放在一个存储库中。
OTOH,如果最顶层"常见"文件夹不是所有内容,我有一个问题。
"普通"每个重大项目下都有同样的问题。
我还不确定我的"粒度"应该是 - 每个MajorProject或每个CustProject的存储库。
所以 - 问题:
1)如果我按照"每个MajorProject" - 如何处理最顶层"常见"文件夹?
2)如果我按照"每个CustProject" - 如何处理最顶层和每个主要项目的常用文件夹(如果它们的处理方式与最顶层不同)
3)最后,如果我想创建一个远程中央存储库(而不是本地存储库),在将其本地克隆到我的机器之前,如何安全地将我的所有文件移动到远程中央存储库?
TIA。
干杯, EDB
答案 0 :(得分:2)
我绝对不会将所有内容都放在一个存储库中,尽管您可以在顶级内部使用子存档。然而,我并没有使用过这些。
我建议将它拆分成有意义的最小块。如果您以后决定实际需要更大的分组,则可以随时从多个repos中提取新的仓库。
关于将文件放入中央,服务器持有的回购。只需推送它,或从您当地的仓库服务器克隆。
答案 1 :(得分:2)
对于1)和2),它们都可以用子存储库来回答。主存储库也是一个存储库,因此您的公共文件夹将由主存储库处理,所有主要项目都将位于自己的子存储库中。
现在,选择您是否希望将子回购用于客户取决于您。
至于3),一旦你拥有本地仓库,就可以在你想要使用的中央存储库上进行克隆。对于Mercurial,一旦克隆了一个回购,它本身并不知道它是一个克隆。它们通过互惠路径相连,但克隆与原始路径没有任何不同!