将一个Git子存储库添加到Mercurial

sum*_*tix 17 git version-control mercurial hg-git

我一直在尝试使用bitbucket建立一个项目,它在github上托管了项目依赖项.使用Hg-Git Mercurial插件我几乎可以到达那里.

但是,当需要推动时,事情变得麻烦.

Mercurial子存储库的文档指出:

2.4推

当您推送时,Mercurial将自动尝试首先推送当前存储库的所有子库.这将确保在由顶级存储库引用时,subrepos中的新变更集可用.

但这会引起一个大问题,因为我不想推送所有的子库(我为什么会这样做?) - 我只有读取权限,所以github不会允许它.只需将主存储库推送到远程服务器,但我无法弄清楚如何做到这一点.hg无论是否有变化,都希望控制并推送所有子存储库.有没有办法绕过这个功能

唯一需要推动的是.hgsub.hgsubstate.一旦他们通过替代路由推送(更新到不存在子存储库的变更集),就可以更新并从远程存储库中提取更改,但是如果我要在变更集上再次推送子仓库,整个考验重演.

小智 12

为了将来参考,mercurial的开发分支(以及即将发布的1.8版本)现在支持本机git子目录.这种特殊情况非常好地实现,如果不知道其远程存储库是否具有当前提交,则从根存储库推送只会告诉git subrepo推送.


sum*_*tix 4

由于 Mercurial 的推送方法,这是不可能的。这是设计错误。

最好的解决方案是更新到子存储库不存在的先前版本,然后推送。这将绕过 Mercurial 的限制并上传必要的.hgsub文件.hgsubstate。这有点不方便,但这是迄今为止我发现的让 Mercurial 和 Git 相互协作的最佳方法。

也许将来 Hg-Git 将进行更新以自动处理此用例。