Mercurial的廉价克隆/本地分支

时间:2010-04-08 10:32:42

标签: mercurial dvcs

几天前刚刚开始与Mercurial合作,而且有一些我不明白的事情。

我有一个我想要做的实验性的事情,所以正常的做法是克隆我的存储库,处理克隆,如果最终我想保留这些更改,我会将它们推送到我的主存储库。

问题是克隆我的存储库需要很多时间(我们有很多代码)并且只编译克隆的副本需要一个小时。
所以我需要以某种方式在不同的存储库上工作,但仍然在我的原始工作副本中。

输入local branches

问题只是创建一个本地分支需要永远,并且使用它们也不是那么有趣。因为当在本地分支之间移动时不会“恢复”到目标分支状态,我必须发出hg purge(删除在移动的分支中添加的文件),然后hg update -c(到在移动的分支中恢复已修改的文件)。 (注意:我确实尝试过PK11 fork的本地分支扩展,它有一个简单的本地分支创建崩溃,但有异常)

在一天结束时,这太复杂了。我有什么选择?

4 个答案:

答案 0 :(得分:5)

除了克隆之外,还有几种使用本地分支的方法:

  • 书签
  • 命名分支
  • 匿名分支

您可能有兴趣阅读非常有见地的guide to branching in Mercurial。我想书签扩展程序是您所描述的上下文中最合适的分支方式。

答案 1 :(得分:1)

可能不是你想听到的答案,但我想说你应该考虑将你的存储库分成一些更易于管理的块:)。例如。这些文档和那些设计文件是否真的需要包含在同一个存储库中,该编辑器工具是否值得拥有自己的存储库等。

因为克隆会创建硬链接,所以它几乎已经尽可能快;如果克隆已经需要5-10分钟,那么制作文件系统副本必须更糟。 (提示:请记住hg clone -U如果您不需要工作副本,它会快得多。)

否则,是的,带书签的匿名分支是进行就地切换的常用方法。

答案 2 :(得分:0)

克隆本地仓库需要多长时间?

听起来你构建过程可能是我的薄弱环节 - 也许你需要像ccache这样的东西?这样你就可以快速克隆和构建

答案 3 :(得分:0)

您无法在现有克隆的基础上进行实验,当您想对主线进行一些更改时,请在开始实验之前返回并更新到上一版本?