2

我有超过 10 年的软件项目,我想致力于 Hg。

这是与 Delphi 7 相关的代码,包括 3rd 方许可库、使用 svn 管理的开源库和我自己的代码(我正计划迁移到 Delphi XE5)。

第 3 方和 svn 派生的库通常在 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)如果我选择“per MajorProject” - 如何处理最顶层的“common”文件夹?

2)如果我使用“per CustProject” - 我如何处理最顶层和每个主要项目的公共文件夹(如果它们的处理方式与最顶层不同)

3)最后,如果我想创建一个远程中央存储库(而不是本地),我如何安全地将所有文件移动到远程中央存储库,然后再将其克隆到我的机器本地?

TIA。

干杯,教育发展局

4

2 回答 2

2

我绝对不会将所有内容都放在一个存储库中,尽管您可能会在顶层使用子存储库。但是,我自己没有使用过这些。

我建议将它分成有意义的最小块。如果您以后决定实际上想要更大的分组,您总是可以从多个存储库中拉入一个新的存储库。

关于将文件放入中央服务器保存的存储库。只需推送到它,或者从本地存储库克隆到服务器上。

于 2014-03-27T10:46:29.387 回答
2

对于 1) 和 2),它们都可以用子存储库来回答。主存储库也是存储库,因此您的公共文件夹将由主存储库处理,您所有的主要项目都将在自己的子存储库中。

现在,选择是否要为客户使用子存储库取决于您。

至于 3),一旦您拥有本地存储库,请在您希望使用的中央存储库上进行克隆。对于 Mercurial,一旦一个 repo 被克隆,它本身并不知道它是一个克隆。它们通过互惠的路径联系在一起,但克隆与原版没有任何不同!

于 2014-03-27T11:48:23.123 回答