在我的回购中,我有修改1到10.我已经推高到5(所以下一个hg push
将发布修订版6-10)。
但我现在必须打断我的工作,结果并非100%完成。所以我想将修订版6-10移到一个新的“实验性”分支中,以允许其他人完成的工作而不会破坏每个人的来源。
如何将分支添加到非尖端修订版(在我的情况下:从修订版6开始)?或者我应该采用完全不同的方法吗?
答案 0 :(得分:7)
如果不修改历史记录,则无法在事后应用分支名称。
最简单的方法是让其他用户使用修订版5作为他们创建的任何更改的父级。例如,其他用户会:
hg clone <your repo>
甚至hg clone --rev 5
hg update -r 5
hg commit
当他们提交更改时,它将在default
分支上创建第二个头,但这不会产生任何问题。完成实验性更改后,您只需将两个头合并在一起。
话虽这么说,可以使用Mercurial Queues(MQ)将您的更改集移动到分支上。以下序列显示了如何完成:
hg qinit
(创建新的补丁队列)hg qimport --rev 6:10
(将r6-10导入新的补丁队列)hg qpop -a
(从工作副本中删除所有补丁)hg branch <branch name>
(创建新的实验分支)hg qpush -a
(将所有补丁应用到您的分支机构)hg qfinish -a
(将所有修补程序转换为永久更改集)答案 1 :(得分:2)
实际上命名的分支对你的案例来说是一个好主意,但是他们的名字被烧成历史的事实主要是一个问题而不是一个特征。恕我直言Git的分支名称更实际。但是,在某种程度上,您还可以使用书签处理您的案例,这些书签自Mercurial 1.7以来可以推送(这里不确定)。也就是说,您可以使用 stable (或者您在团队中同意的任何内容)为修订版本5添加书签,并且修订版10会被标记为 Aarons-not-finished-work 之类的内容。然后其他开发人员只需提取 stable ,除了你应该继续工作的同事,谁会拉另一个书签。但是,我个人还没有使用过这样的工作流程,所以我不能说它在实践中是否表现良好。