我今天发现,即使关闭它,我也可以切换回分支。为什么?
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
答案 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 =