2010-10-25 65 views
7

我的公司正在从Subversion转向Mercurial。其中一个原因是汞,我们希望能够更独立地工作。如何备份本地Mercurial存储库并使用rebase?

我们期待使用rebasing作为我们从主存储库进行更新的主要方式,至少在开始时将历史记录保存在一行中,从而使从Subversion转换变得更加容易。

现在,如果我们需要独立工作,我们有两种选择:在Subversion中创建一个分支,并在那里提交(又称合并地狱),或者根本不提交。通过Mercurial,我们希望能够继续在当地进行承诺,并且经常进行重新设计,从而获得独立性,同时不再支付创建指定分支机构的行政成本。

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

随着Mercurial,将有可能继续承诺和重新投标,而不会延长时间,使更多的工作面临风险。于是出现了一个问题:如何备份开发者机器上的东西?

  • 一个解决方案是使用一些外部备份软件,但这听起来不是一个好主意。
  • 我们也可以一直推到主仓库(甚至可以自动?),但是这样做会导致无法使用rebasing,并且会导致大量悬而未决的头寸。
  • 我们可以推入备份仓库,并尝试在主仓库中只有一个仓位。这听起来很复杂。

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

回答

1

你也可以给每个开发回购:

 
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 tip 

如果我使用这个方案,你可以设置:

 
[paths] 
backup = https://example.com/repos/awesome-product-wolever 

.hgrc/hgrc

或者,你可以通过在其全球~/.hgrc设置此给每一个开发整体备份回购:

 
[paths] 
backup = https://example.com/repos/wolever-backup 
4

就扔了这一点有:我认为你犯了一个错误。线性历史并不是什么大不了的,拉/合并是更为正常的mercurial工作流程。拥抱非线性历史并在特殊场合留下rebase。

你说:“借助Mercurial,我们希望能够继续在当地进行承诺,并经常进行重新组合,从而获得独立性,同时免除创建命名分支机构的管理成本。”但是在mercurial中,使用未命名的分支机构这个,所以没有管理成本。

请参阅http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/#branching-anonymously了解如何自动创建未命名的分支将为您提供准确无误的零乱。

我知道这听起来好得将要真蛇油,但你的人可以只hg pullhg mergehg push时,他们通过而无需考虑分支名称的人,或谁拥有什么克隆,或其他任何东西,你将有一个协调的中心与断开的工作。

1

我觉得你做错了。
你所描述的看起来更像是你试图放置一个工具到确保/强制执行的一个过程,而不是到支持的过程。

与集中式方法相比,以分散方式工作是一个相当大的转变,并且试图将您所描述的那种约束比开发人员感受到的经验更好地受到伤害。

如果您害怕他们不会定期将其更改推送到主要存储库,那么最好问问自己(也可以问问他们)“我们是否准备好改变我们的流程“” 许多人仍然声称DVCS会给他们的软件工厂带来混乱。的确,DVCS不强制实施线性(单点失败)方式,但是带来混乱的不是工具,而是您在公司内部建立的团队精神。

现在,如果你必须迁移到水银(因为它已经出售给企业的管理水平,或其他),但感觉更舒服SVN办法的,带一点“加”,请尝试使用HgSubversion第一。之后的移民工作仍然很容易。

相关问题