(免责声明:我对mercurial和版本控制完全不熟悉)
所以我有一个文件夹结构
Programs
CPPLib1
CPPProject11
CPPProject12
CPPLib2
CPPProject21
CPPProject22
每组三个完全独立于另一个组,但在每个组中代码是相关的,我想在整个版本控制下管理它(在一个事务中提交/提取所有内容)。正如我通过谷歌搜索所理解的那样,我必须在他们共同的父母(程序)中为每个组建立一个存储库,但我不能拥有2个不同的存储库,对吧?这是否意味着我必须改为使用这种结构:
Programs
Group1
CPPLib1
CPPProject11
CPPProject12
Group2
CPPLib2
CPPProject21
CPPProject22
相关问题,此网站http://help.fogcreek.com/8169/using-more-than-one-repository说
“由于Mercurial和Git是分布式版本控制系统(DVCS),因此每个项目至少应使用一个单独的存储库,包括共享项目和库。”
那么这个建议意味着什么?
我没有单独的存储库 CPPLib1
CPPProject11
CPPProject12
并整体管理它们。我很困惑。
答案 0 :(得分:0)
对于每个项目组,您需要在单独的目录中创建一个存储库。关于你如何构建下面的结构是有争议的,并且取决于你的偏好。
您说您希望在单个存储库中管理该项目组中的所有内容。这意味着您只需创建一个目录结构,就像您所描述的那样,子项目位于此存储库中的不同目录中。
在每个组中,您可以进一步使用这些目录(库,程序1,程序2,...)作为一个单独的存储库,而这个存储库又成为主存储库的子存储库,如Lasse Karlsen(Subrepository)给出的链接。
如果您允许更灵活的布局并放弃检查整个组,您也可以采用不同的方式处理它:例如,您可以将库声明为使用该库的每个程序的子库。它的优势在于程序直接定义了它所依赖的库版本
此外,在跳转到子存储库之前,您可能还想查看来宾存储库的替代实现。它们处理依赖性不那么严格,因此无法找到子存储库变得不那么致命:https://bitbucket.org/selinc/guestrepo