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推送.
由于 Mercurial 的推送方法,这是不可能的。这是设计错误。
最好的解决方案是更新到子存储库不存在的先前版本,然后推送。这将绕过 Mercurial 的限制并上传必要的.hgsub文件.hgsubstate。这有点不方便,但这是迄今为止我发现的让 Mercurial 和 Git 相互协作的最佳方法。
也许将来 Hg-Git 将进行更新以自动处理此用例。