我有一份新工作,但他们使用mercurial作为他们的版本控制,我的大部分经验都是使用git。我尝试学习mercurial,但它的分支方式(即使像书签这样的扩展)只是让我完全没有意义。有没有人知道在本地使用git的方法,但推送到mercurial?
我已经尝试了hg-git插件并且已经达到了我可以在git中提交并将这些更改推送到远程mercurial repo的程度但是我遇到的问题是无论我找到什么教程,我似乎无法将mercurial的新变化拉回到git中(这使得整个事情在这一点上毫无用处)。如果你有关于如何设置hg-git工作推送到mercurial的链接,请告诉我。
解决方案(我认为)
根据Lazy Badger的评论,我认为这将起作用:http://ryanzec.com/index.php/blog/details/9
答案 0 :(得分:3)
你可以使用git中的Mercurial端点,但是,与反方向(hg - > git)不同,你必须同时拥有 VCS 和两个repos位置强>
.hgrc
添加到.hgrc:
[git]
intree=1
克隆您的Mercurial仓库
hg clone ... repo
转到回购
cd repo
创建跟踪Mercurial默认分支的本地书签 - 这将导出到您的Git
hg bookmark hg/default -r default
导出到git repo
hg gexport
配置Hg忽略Git仓库
echo ".git" >> .hg/hgignore
配置Git忽略Hg仓库
echo ".hg*" >> .git/info/exclude
将Git配置为忽略与Mercurial相同的内容
git config core.excludesfile `pwd`/.hg/hgignore
让您的主分支跟踪导出的Hg默认分支
git branch --track master hg/default
git reset --hard
像往常一样工作并承诺Git
将您的更改导出为Hg
hg gimport
全力推动世界
hg push
对于每天工作重复步骤13-15
PS:从HG到Git的工作 会产生少得多的行动和头痛
答案 1 :(得分:3)
想一想,看看替代解决方案,同样不平衡和弯曲,但不那么自命不凡(我希望) - 3层回购(2 Mercurial + 1 Git)链3层架构
他们有(本地)名称,使用如下:
介体设置几乎与解决方案1中的hg-repo相同(hg-git,书签),除了hgrc的[paths]部分中的一个细节 - 将是两个路径:Master和WorkHorse以便能够拉|使用Master和WorkHorse双向推进
工作流:
答案 2 :(得分:1)
如今,有一个新的git-remote-hg扩展可以满足您的需求。它似乎是Hg-Git插件的对应物。见http://felipec.wordpress.com/2012/11/13/git-remote-hg-bzr-2/