关闭后为什么我可以切换到分支?

时间:2010-08-03 07:02:28

标签: mercurial dvcs

我今天发现,即使关闭它,我也可以切换回分支。为什么?

hg init abc
cd abc
echo 'readme1' > README1.txt
hg ci -Am "1st commit"
hg branch other-branch
echo 'readme2' > README2.txt
hg ci -Am "2nd commit" 
hg update default
hg merge other-branch
hg ci -m "Merged other-branch into default"
hg update other-branch
hg ci -m "Closing other branch" --close-branch
hg update default

现在我想我不应该这样做

hg update other-branch

但效果不错

让我感到困惑,让我感到有些不安。

更新:抱歉忘了表明我正在使用HG v.1.6

2 个答案:

答案 0 :(得分:2)

关闭分支主要只是让它不会显示在某些列表中:

https://www.mercurial-scm.org/wiki/PruningDeadBranches#Closing_branches

答案 1 :(得分:2)

就像Amber所说,当你关闭一个分支时,它只会记录它已经关闭。因此,当您执行“hg branches”时,您只会看到“default”,而不是“other-branch”。

但是,只要切换到此分支并提交新内容,它就会自动重新打开它(因此会再次显示在“hg branches”列表中)。完成后,您也可以重新关闭它。

我发现这个功能实际上是可取的:想象一下,您已经创建了一个"stable"分支,以便为交付稳定某些代码,只允许在此分支上修复错误。现在交付后,您可以关闭稳定分支并在默认情况下再次开发新功能,切换到下一次迭代并准备下一次交付(假设您正在使用scrum)。现在,当三天后,您的送货客户发现问题并要求接收固定交货,不想等待下一个,然后您可以轻松切换到稳定分支,重现问题,修复它(重新打开分支) ,重新部署,最后再次关闭分支。对我来说,这似乎是一个看似合理的场景和良好的Mercurial行为。

只是我的0.02€: - )

干杯,
克里斯托弗。

= 21世纪的文盲不会是那些无法读写的人;他们将是那些无法学习,忘却和重新学习的人。 --Alvin Toffler =