【问题标题】:interoperation between mercurial and subversionmercurial 和 subversion 之间的互操作
【发布时间】:2010-10-24 00:56:32
【问题描述】:

最近有人问过similar question,但不一样。

Mercurial 网站有一个 detailed page 列出了 4 种不同选项的比较,以使 Mercurial 和 Subversion 互操作。

我想知道是否有人尝试过其中的一种或多种,​​并且可以将任何非常好的或非常糟糕的经历联系起来。hgsubversion download 上的注释说

hgsubversion 是 允许使用 Mercurial 的 Mercurial 作为 Subversion 客户端。现在它 准备好用于生产。你 仅当您是 准备破解它,然后去潜水 进入 Mercurial 和/或 颠覆。

这几乎是在邀请我写着“放弃希望,所有进入这里的人”或“入侵者将被逮捕”的标语。所以我只是想知道对于没有太多额外时间的人来说,这个或任何其他替代方案是否值得尝试。

【问题讨论】:

  • +1 表示懒惰。有了所有的警告,我也无法让自己尝试任何选项:-)
  • 我不会称之为“懒惰”,我会称之为“节俭”。设置/管理源代码控制配置(应该是)只是软件工作的一小部分,而这又只是我工作的一小部分。要么,要么我不得不去纠缠我们的 IT 团队,他们不会知道,因为他们通常使用“真实”软件(Windows/IIS/SQLServer 等)。所以当涉及到像这样的“小”任务时,我必须明智地利用我的时间。当我真的很懒惰时,我会为此感到自豪。 :)
  • “现在它还没有准备好用于生产” - 情况仍然如此吗?
  • TortoiseHG 用户可以参考abdullin.com/journal/2010/3/22/…。运行良好,虽然有点慢

标签: svn mercurial interop hgsubversion hgsvn


【解决方案1】:

我已经使用 hgsubversion 好几个月了。您可能缺少一些功能,但它已准备好用于生产。

OGRE 和许多其他人决定使用 hgsubversion,因为它速度很快。

【讨论】:

    【解决方案2】:

    我想要第二个选项 hgsvn,如果你想镜像一个大的存储库,它会相当慢,但你可以从接近尖端的修订开始(这通常是你想要的) .

    我发现它非常健壮,具有超过 5000 个修订版的镜像存储库。如果这是您想要的,您可以将变更集推回。

    【讨论】:

    • 让我补充一点:我目前使用 mercurial + hgsvn + arrenbrecht.ch/mercurial/pbranch 为(开源)项目做出贡献。只需将 svn repo 拉入 mercurial 使用 pbranch 管理您的补丁。然后,您可以通过电子邮件将您的补丁传达给项目维护人员。
    【解决方案3】:

    我刚刚开始使用选项 4,hgsvn。尽管 Mercurial 页面上说了什么,hgsvn 0.1.7 确实支持推回 svn repo。

    我的用例非常简单:我真的只想要拥有本地分支的能力(在这个阶段)。 hgsvn 页面上列出的工作流程正是我所使用的,到目前为止它还没有破坏任何东西。

    【讨论】:

      【解决方案4】:

      我已经使用 Subversion 好几年了,但我有兴趣尝试这种分布式 VCS 理念。 (我想使用 git,但它在 Windows 上不太好,因此无法在我的工作中使用它。所以我接下来想尝试 Mercurial。)

      我最初想使用 Subversion 服务器进行推送和拉取。所以我尝试了选项 1,hgsubversion。我在带有 hg 1.1.2 的 Ubuntu 9.04 (Jaunty) 上。我按照该网页上给出的指示进行操作。一切似乎都安装得很好。但是当我尝试 hg svnclone 命令时,我得到一个“未知命令”错误。进一步挖掘表明,现在您只需使用前缀为 svn+ 的 SVN URL 执行 hg clone。例如:

      hg clone svn+https://server/svn/repo/

      然后,我收到一条错误消息:

      abort: could not import module encoding!

      这似乎是known bug,但经过一番摆弄后,我无法弄清楚我要做什么来修复它。

      总结:选项 1 目前对我不起作用。其他选项不符合我想要的工作流程。

      更新:我用 Mercurial 1.2.1 再次尝试,得到了相同的结果。有人告诉我开发中的 mercurial-crew 分支应该可以工作。

      【讨论】:

      • 您需要最新版本的 mercurial 和 hgsubversion。但是 - 目前要小心 hgsubversion。看起来有很多重构正在进行
      • 是的,你需要 Mercurial 1.3 -- 编码模块是在 1.2.1 发布之后添加的。
      【解决方案5】:

      是的,您必须使用 Mercurial 的最新“船员版本”,请参阅 Mercurial wiki 上的船员存储库页面。

      当 Mercurial 1.3 于 7 月 1 日发布时,hgsubversion 应该会开始维护一个稳定的分支。至少 IRC 上是这么说的(irc.freenode.net 上的#hgsubversion)。

      【讨论】:

      • 哦,啊。然后我期待着 7 月 1 日。
      • dohhwww,看起来这对于 hgsubversion 不适用; “convert”扩展是显然被添加/发布的东西
      • 转换扩展是 Mercurial 附带的(并且已经发布了很长时间)。很抱歉 hgsubversion 还没有发布稳定版本,显然他们进行了比我回答这个问题时想象的更大的重写。
      【解决方案6】:

      我认为 hgsubversions 的作者有点偏执。如果您遵循自述文件 - 意味着使用合适的最新版本的 mercurial 和 subversion - 不是 发生在您的发行版上或由您的发行版安装的任何东西 - 那么它实际上工作得很好。同样,包含的文档是最新的;而你在网上找到的可能不是。我已经使用它几个星期了,效果还不错,但并不完美。

      当您进入两个系统的角落时,您就会遇到问题:hgsubversion 和其他扩展(我对 hgtasks 有问题)似乎彼此不喜欢;目前尚不清楚如何处理属性等。

      【讨论】:

      • 来自未来的你好!我在工作中每天使用 hgsubversion 已经有几个月了,而且看起来还不错。与纯 Mercurial 相比,它有一些尴尬(例如,当我有未提交的更改时无法从 Svn 更新),并且在尝试重新设置 Svn 中奇怪的分支事件时,它已经搞砸了(所以不要那样做) ,但除此之外,没问题。
      猜你喜欢
      • 2023-03-02
      • 2011-03-16
      • 2013-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-04
      • 2010-10-07
      相关资源
      最近更新 更多