1

总结问题:

mercurial/kiln 存储库中的 github 托管子存储库是否可能,如果是,它们是否会在通过hg cloneorhg commit命令操作父 mercurial 存储库时自动更新/克隆?

详细问题:

继我的问题在这里得到很好的回答之后,我的一些第三方代码位于我不久前从 github 上的开源工作下载的文件夹中。因为在那个阶段我没有使用版本控制,那些文件夹只是标准文件夹,现在被合并为 mercurial 中的子存储库。

这显然不理想,因为一方面,新版本的库可能有错误修复,或者我希望将来使用的新功能。我可能还需要在本地自定义一些库。

我可以从阅读此链接中看到,可以对那些 git 服务器 url(和修订版)进行反复“了解”,因此我可以直接从其父存储库中反复克隆 github 托管库。

我是否正确地说,当我克隆父(mercurial)存储库时,这些文件将从 github 中提取,而无需使用 git 单独管理它?

还不清楚的是,如果我要这样做,并且发现代码可能需要从该 github 克隆的存储库中进行定制,我是否需要使用 git 来管理本地文件的修订,或者会使用 mercurial代理?例如,我hg commit -S将 mercurial 代表我调用 git 来处理它吗?

4

1 回答 1

1

我是否正确地说,当我克隆父(mercurial)存储库时,这些文件将从 github 中提取,而无需使用 git 单独管理它?

是的,包含子存储库的 Mercurial 存储库的克隆也会触发子存储库的克隆。它确实发生在update。Mercurial 会注意到该.hgsub文件并为您发出所需的hg clone命令git clone。它使用其中的信息.hgsubstate来准确了解要签出的修订版本。

子存储库可以托管在任何地方。对于声明为的 Git 子存储库

foo = [git]https://github.com/user/repo.git

Mercurial 将简单地发出相应的克隆命令:

git clone https://github.com/user/repo.git foo

然后,您有责任稍后进入foorepo 并根据需要使用 Git 获取新的提交。获取/拉取新提交后,您可以进行顶级提交以在.hgsubstate文件中记录子存储库的新状态。从这个意义上说,用于hg summary查看子存储库是否脏。

[...] 我需要使用 git 来管理本地文件的修订版,还是 mercurial 会通过代理来做到这一点?例如,我要 hg commit -S 会 mercurial 代表我调用 git 来处理它吗?

当您编辑文件并创建一个顶级的hg commit时,Mercurial 将确保首先提交子存储库(如果您使用hg commit -S或如果ui.commitsubrepos=True)。如果您进行顶级推送,则 Mercurial 将始终首先推送子存储库,以便您始终在服务器上拥有一组一致的更改。

于 2012-01-18T22:44:33.527 回答