繁体   English   中英

“Hg到Hg(Gateway)到SVN”与“Git to Git(Gateway)到SVN”相比

[英]“Hg to Hg (Gateway) to SVN” compared to “Git to Git (Gateway) to SVN”

问题类似于 (未答复)和问题(同样的问题不涉及Git)。

我们的目标是使Hg为SVN前端一段时间完全过渡到汞之前。

设置可能看起来如下所示(与上面提到的问题相同),但是我不确定中间Hg存储库的确切拓扑。

Dev1 Hg --> Hg <--> SVN
Dev2 Hg -/

我知道上面的设置适用于gitgit-svn ,如本评论中所述

Dev1 Git --> Git (bare) <--> Git (bridge) <--> SVN
Dev2 Git -/

建立:

  1. 无论是git svn init ,还是git svn clone SVN repo。 然后它成为“Git / SVN Bridge”。

  2. 修复任何分支,标签等...这里。 svn/* refs被认为是遥控器,所以如果你想跟踪分支,请检查这些遥控器并创建适当的本地分支。 另外,检查标签,并创建实际标签。 您必须为要在Git和SVN之间同步的任何SVN分支创建本地分支。

  3. 现在,在某处创建一个新的裸存储库( git init ),并从桥中将所有分支git push –tags裸存储库( git push –tags )。

  4. 所有Git用户现在克隆这个裸存储库。 该桥只由一个(或几个)了解如何同步Git和SVN的人维护。

要通过网桥更改主服务器上的SVN中继,反之亦然:

  1. git svn fetch (获取新的SVN更改)

  2. git checkout master

  3. git pull master (从裸仓库中获取Git更改)

  4. git checkout svn/trunk (checkout detached head)

  5. git merge –no-ff –log master (从master更改合并)。 –no-ff确保实际提交, –log从master上的每个提交复制单个日志消息( –log是可选的)。 如果要编辑提交消息,则可以运行git commit -amend。

  6. git svn dcommit (这会将你的合并提交推送到SVN。请注意,提交是在一个独立的头上,并且不再可访问)。 您在master上的所有工作(因为master和svn/trunk的merge-base)都作为单个更改提交,现在可供SVN用户使用。

  7. git checkout master

  8. git merge svn/trunk (从SVN获取新的更新 - 使用更改的提交消息 - 并合并到master)

  9. git push barerepo (使git push barerepo用户可以使用SVN更改)

我不知道的是,是否有可能以某种方式在Hg上复制上述内容。 正如我所看到的(我是Git的中间用户并且了解使用Hg的基础知识),Hg的障碍是:

  • 没有远程跟踪分支(这可能与书签有关吗?单独克隆的回购?)
  • 不可能通过hgsubversion推送合并提交(上面列表中的步骤hgsubversion 。什么阻止hgsubversionsvn dcommit做什么?)

是否有可能使Hg-SVN网关以与Git-SVN网关相同的方式工作? 如果不是,为什么?

简短的版本是:没有人确信我推出合并到Subversion的合理预期行为是什么,并且对hgsubversion有一些轻微的修改,建议推动合并而不是重新修订。 这些都不应该太难,只需要有人动机去实施。 如果你很好奇, 这个帖子有一个类似的请求,我回答了一个相当深入的讨论我和其他几个人一起思考的基本方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM