因为新的见解而更新:五年后,当我看到这个问题时,我意识到这源于尝试使用版本控制系统作为包管理器。这当然会导致各种意想不到的问题,我们不应该这样使用它。如果您正在阅读这个问题,我建议您搜索一下您的首选语言的软件包管理器。Mercurial知识库缩小克隆?
我的原问题:我目前正在从Subversion转移到Mercurial,我不得不说我不后悔这个决定。然而,当试图转换我的项目时,我碰到了一个Mercurial的问题,我似乎无法修复。我有两个不同的项目:一个是框架,另一个是依赖于该框架的应用程序。下面是该仓库的样子:
框架库:
- 文档/
- 部署/
- 的lib/
- 测试/
应用程序库:
- 应用/
- 配置/
- 的lib/
- 测试/
- WWW/
我想什么是应用程序的lib目录中包含的副本框架的lib /目录。我曾经使用svn:externals来做到这一点。现在,我知道Mercurial支持concept of subrepositories,但这看起来不像“正确”的解决方案,因为它实际上并不像我想要的那样拉入lib /目录,因为您仍然必须拉和推手动更改。这个,再加上一次你克隆框架库,你会得到所有它,而不仅仅是lib /目录。我只需要lib /目录,而不是测试或文档。
现在,我想出了两个不同的解决方案来解决这个问题,但我不知道哪个是最好的。第一种解决方案是将框架完全克隆到不同的目录中,并在指向框架的lib /目录的应用程序的lib /目录中创建符号链接。把符号链接放入.hgignore应该确保一切都很好,我想呢?这意味着您可以编辑框架代码并进行提交,您也可以编辑应用程序的代码并进行提交。
另一种选择是拥有多个存储库。整个框架被取消,这意味着您将获得docs /,deploy /,test/etc.目录,这些目录在框架的使用不需要。我认为可能纯粹为图书馆创建一个存储库可能是一个解决方案,尽管我真诚地怀疑它,因为单元测试非常依赖图书馆本身。
有没有人知道这个问题的体面的解决方案?
类似问题(和答案)在上[如何克隆在水银的存储库的子文件夹?(http://stackoverflow.com/questions/920355/how-do-i-clone-a- sub-folder-of-a-repository-in-mercurial/40355673) – Anon 2016-11-01 07:24:21