【问题标题】:Mercurial and SVN workflow issueMercurial 和 SVN 工作流程问题
【发布时间】:2012-04-11 21:23:25
【问题描述】:

我有一个有趣的源代码管理工作流问题。

我的公司正在与使用 SVN 跟踪当前正在积极开发的产品的第三方承包商合作。我们将在接下来的几个月内接管这个存储库,但我们希望开始研究项目中的其他功能。出于显而易见的原因,我们的承包商拒绝了我们提交访问权限,但同意读取他们的 SVN 存储库的访问权限。

对于我们的 Windows 开发机器,我们使用 mercurial 存储库。 我想以某种方式将 SVN 存储库复制到新的 HG 存储库,并定期将提交给 SVN 的更改合并到 HG。 换句话说,我们将在两个不同的存储库中并肩工作。

有人做过这样的事吗?对方法有什么建议吗?

谢谢。

【问题讨论】:

  • 谢谢。我实际上决定暂时手动合并。我在 HG 中创建了新的 repo,我会定期从 svn 手动复制文件。如果他们有任何建议,我很乐意听取其他人的意见。

标签: svn mercurial


【解决方案1】:

我想任何过程只会随着您在 mercurial 中的变化增加而变得更糟,并且与 SVN 中的变化相距甚远,而 SVN 中的变化永远不会与您的 mercurial 变化合并。但是,我很想知道 mercurial 与这种复杂性如何公平地合并。我会这样处理:

1) 从 svn 导出来创建你的 hg repo,我们称之为/SvnExportCleanHG 将其克隆到一个工作副本,您公司的所有新功能都将用于该副本:/WorkingHG

2) 当您想从 SVN 中提取新的更改时,请从 /SvnExportCleanHG 执行 svn 更新并将其提交到干净的 repo。这将有 2 个修订版,来自 svn 的原始版本和最新版本。在/WorkingHG 中运行hg pull /SvnExportCleanHG 并合并所有不可避免的更改。然后将其提交到 WorkingHG 存储库。

现在你已经尽你最大的努力尝试使用 mercurials 合并,你仍然有一个干净的/SvnExportCleanHG,你可以从 SVN 中提取下一个更改而不会发生任何冲突。

任何时候你想再次从 svn 更新,请执行第 2 步。从 svn 更新和在干净的 repo 中提交永远不会冲突,因为它只会反映 svn,但它总是允许你从工作副本 HG 中提取和合并因为它们的基础相同。

这取决于您的更改级别以及 SVN 的更改是否会为您带来很多收益。如果你们停留在代码的不同基线,这将是一个很棒的工作流程,并且可以节省大量的手动工作。如果您重叠很多,这仍然有效,但它只会促进您的工作流程,而不是解决许多合并问题。

如果你尝试一下,我会对它的效果非常感兴趣。

【讨论】:

  • 这很有意义。我希望我在第一次遇到问题时会想到这种方法!虽然这对我来说不再是问题,但我很高兴你为后代和我的理智回答了这个问题。
【解决方案2】:

SVN + Mercurial 在您开始合并之前工作良好。但是,如果您不使用合并,为什么还需要 mercurial。我们几乎有过这样的情况。我们使用 hgsubversion 扩展将 svn 复制到 mercurial,现在所有活跃的开发都在 mercurial 中。然后有时我们只是将 mercurial 工作目录复制到没有历史记录和所有分支的 svn。

【讨论】:

    猜你喜欢
    • 2011-01-30
    • 1970-01-01
    • 2010-12-18
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多