【问题标题】:How to back up local Mercurial repositories and use rebase?如何备份本地 Mercurial 存储库并使用 rebase?
【发布时间】:2010-10-25 19:00:35
【问题描述】:

我的公司正在从 Subversion 迁移到 Mercurial。原因之一是与 Hg 一起,我们希望能够更加独立地工作。

我们期待使用变基作为我们从主存储库更新的主要方式,至少在开始时,将历史记录保持在一条线上,从而更容易地从 Subversion 过渡。

现在,如果我们需要独立工作,我们有两个选择:在 Subversion 中创建一个分支,然后在那里提交(也称为合并地狱),或者根本不提交。借助 Mercurial,我们希望能够继续在本地进行提交,并且不时地变基,从而获得独立性,同时避免创建命名分支的管理成本。

这一切听起来很酷,直到出现备份。使用 Subversion 很明显,如果有人不提交,他们的工作可能会丢失。但是不提交很快就变得不方便(没有历史记录,没有日志消息等),所以人们仍然会一次又一次地提交。

有了 Mercurial,就可以继续提交和变基,而无需长时间推动,从而使更多工作面临风险。那么问题来了:如何备份开发者机器上的东西?

  • 一种解决方案是使用一些外部备份软件,但这听起来不是一个好主意。
  • 我们也可以一直推送到主存储库(甚至可能是自动推送?),但这会导致无法使用变基,并且会导致主存储库中出现大量悬空。
  • 我们可以推送到备份存储库,并尝试在主存储库中只有一个头。这听起来很复杂。

还有其他方法可以做到这一点吗?我想找到一个解决方案,让我们的开发人员在一开始就使用他们的大部分 Subversion 知识。

【问题讨论】:

    标签: mercurial


    【解决方案1】:

    只是把它扔在那里:我认为你犯了一个错误。线性历史没什么大不了的,拉/合并是更正常的可变工作流程。拥抱非线性历史,为特殊场合留出 rebase。

    您说“使用 Mercurial,我们希望能够继续在本地进行提交,并且不时地变基,从而获得独立性,同时避免创建命名分支的管理成本。”,但在 mercurial 中,我们为此使用了未命名的分支,因此没有管理费用。

    请参阅http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/#branching-anonymously,了解自动创建的未命名分支如何以零麻烦的方式为您提供所需的内容。

    我知道这听起来好得不像是真正的蛇油,但你的人可以在他们完成后只需 hg pullhg mergehg push 并且无需任何人考虑分支名称,或者谁有什么克隆,或任何东西,你将拥有一个协调中心,工作不连贯。

    【讨论】:

      【解决方案2】:

      你也可以给每个开发者一个 repo:

      https://example.com/repos/awesome-product https://example.com/repos/awesome-product-wolever https://example.com/repos/awesome-product-pintér

      他们可以随心所欲地推送。

      这意味着很多悬垂的头,但这可能没关系,因为在恢复之前没有人会看它们……然后你只需要当前提示的祖先:

      hg pull https://example.com/repos/awesome-product-wolever -r 提示

      如果我使用这个方案,我会设置:

      [路径] 备份 = https://example.com/repos/awesome-product-wolever

      .hgrc/hgrc.

      或者,您可以通过在其全局~/.hgrc 中设置它来为每个开发人员提供一个整体备份存储库:

      [路径] 备份 = https://example.com/repos/wolever-backup

      【讨论】:

        【解决方案3】:

        我认为你做错了。
        您所描述的内容看起来更像是在尝试使用一种工具来确保/执行流程,而不是支持流程。

        与集中式方法相比,以分散式工作方式是一个相当大的转变,并且通过尝试设置您描述的那种约束,很可能对您的开发人员感知的体验造成更多的伤害而不是好处。

        如果您担心他们不会定期将更改推送到主存储库,那么最好问问自己(也问问他们)“我们准备好改变我们的进程?" 许多人仍然声称 DVCS 会给他们的软件工厂带来混乱。的确,DVCS 不会强制执行线性(单点故障)的工作方式,但带来混乱的不是工具,而是您在公司中建立的团队精神。

        现在,如果您必须迁移到 Mercurial(因为它已经出售给管理层或其他),但对 SVN 方法感觉更舒服,加上一点“加号”,请尝试首先使用HgSubversion。以后迁移还是很容易的。

        【讨论】:

          猜你喜欢
          • 2016-01-20
          • 2011-01-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多