我一直在尝试使用bitbucket设置一个项目,它在github上托管了项目依赖项。使用Hg-Git Mercurial插件,我几乎可以做到这一点。
但是,当到了推动的时候,事情就变得麻烦了。
Mercurial subrepositories的文档说明:
2.4推送
当您推送时,Mercurial将自动尝试首先推送当前存储库的所有子存储库。这将确保子存储库中的新变更集在被顶级存储库引用时可用。
但这导致了一个大问题,因为我不想推送所有子存储库(为什么要推?)-我只有读访问权限,所以github不允许这样做。只需要将主存储库推送到远程服务器,但我不知道如何执行此操作。hg
希望控制并推送所有子存储库,而不管是否有更改。有什么方法可以绕过这个特性吗?
唯一需要推送的是.hgsub
和.hgsubstate
。一旦它们通过替代路径被推送(更新到不存在子存储库的变更集),就可以更新并从远程存储库中拉出更改,但如果我在对子存储库的变更集上再次推送,整个考验就会重复。
发布于 2010-11-01 01:51:28
这是不可能的,因为Mercurial的推送方法。这是一个设计错误。
最好的解决方案是更新到子存储库不存在的以前的版本,然后推送。这将绕过Mercurial的限制,并上传必要的.hgsub
和.hgsubstate
文件。这有点不方便,但这是我到目前为止找到的让Mercurial和Git相互协作的最好方法。
也许在未来,Hg-Git会被更新来自动处理这个用例。
发布于 2010-12-01 00:11:38
为了便于将来参考,mercurial的开发分支(以及即将发布的1.8版本)现在支持原生git subrepos。这种特殊的情况实现得非常好,如果不知道git子存储库的远程存储库有当前提交,则从根存储库进行推送只会告诉git子存储库进行推送。
发布于 2010-10-31 04:28:03
我认为你应该使用多个存储库;DVCS这样工作更好。
例如,创建一个包含来自github的依赖项的存储库。你只是为了获取更改而拉入该存储库,而不是推送。然后,您就有了另一个用于项目开发的存储库。在这里你可以自由地做任何你想做的事情。然后,您可以链接到您自己的hg代码库以获取依赖项。
这是如果我正确理解了您的问题和您要做的事情的话:)
https://stackoverflow.com/questions/4057888
复制相似问题