使用git但推动mercurial?

时间:2011-10-25 20:56:38

标签: git mercurial hg-git

我有一份新工作,但他们使用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

3 个答案:

答案 0 :(得分:3)

你可以使用git中的Mercurial端点,但是,与反方向(hg - > git)不同,你必须同时拥有 VCS 两个repos位置

  1. 安装Mercurial
  2. 为Mercurial安装hg-git扩展
  3. 确保您已在.hgrc
  4. 中启用了Hg书签扩展程序
  5. 添加到.hgrc:

    [git]
    intree=1
    
  6. 克隆您的Mercurial仓库

    hg clone ... repo
    
  7. 转到回购

    cd repo
    
  8. 创建跟踪Mercurial默认分支的本地书签 - 这将导出到您的Git

    hg bookmark hg/default -r default
    
  9. 导出到git repo

    hg gexport
    
  10. 配置Hg忽略Git仓库

    echo ".git" >> .hg/hgignore
    
  11. 配置Git忽略Hg仓库

    echo ".hg*" >> .git/info/exclude
    
  12. 将Git配置为忽略与Mercurial相同的内容

    git config core.excludesfile `pwd`/.hg/hgignore
    
  13. 让您的主分支跟踪导出的Hg默认分支

    git branch --track master hg/default
    git reset --hard
    
  14. 像往常一样工作并承诺Git

  15. 将您的更改导出为Hg

    hg gimport
    
  16. 全力推动世界​​

    hg push
    
  17. 对于每天工作重复步骤13-15

    PS:从HG到Git的工作 会产生少得多的行动和头痛

答案 1 :(得分:3)

想一想,看看替代解决方案,同样不平衡和弯曲,但不那么自命不凡(我希望) - 3层回购(2 Mercurial + 1 Git)链3层架构

他们有(本地)名称,使用如下:

  • Master(hg) - 公司的中央Mercurial回购
  • Mediator(hg) - 用于翻译变更集的中间件,创建为Master
  • 的克隆
  • WorkHorse(git) - 最终职场,开始时空无一人

介体设置几乎与解决方案1中的hg-repo相同(hg-git,书签),除了hgrc的[paths]部分中的一个细节 - 将是两个路径:Master和WorkHorse以便能够拉|使用Master和WorkHorse双向推进

工作流:

  • Mediator从Master转移,推送到WorkHorse(更改集按原样呈现,不会崩溃,与解决方案1相反)
  • 所有(几乎?不确定合并)工作都发生在WorkHorse
  • Mediator从WorkHorse拉出更改,推送到Master

答案 2 :(得分:1)

如今,有一个新的git-remote-hg扩展可以满足您的需求。它似乎是Hg-Git插件的对应物。见http://felipec.wordpress.com/2012/11/13/git-remote-hg-bzr-2/