我总是使用mercurial的命名分支功能来处理分支,我很满意它。我已经读过关于mercurial书签的特征,虽然尚未使用它。我可以看到使用书签的唯一原因是,如果有人喜欢git风格的分支模型,我不会这样做。
那么,是否有用于混合同一存储库的命名分支和书签的用例? 它甚至有意义吗?
答案 0 :(得分:2)
当我们看到书签改进(远程仓库上的推/拉书签和默认激活的跟踪当前行为)时,我们决定使用:
- 仅为主要版本命名的分支(少于10个长期分支)和
- 为每个功能策略使用一个分支书签。
然而,书签限制的一些限制同时使用书签笨拙/错误 在最新的1.9 + / 2.x + Mercurial版本中情况可能更好,因此测试是有序的 1.9 version确实修复了很多关于书签的错误/限制。
答案 1 :(得分:1)
确实有意义。如果你考虑一下 - 命名分支本质上是在每个子提交中复制自己的标记。因此,您最终可以在同一个命名分支下使用两个不同的头(提示):
@ changeset: 3:fe8f1a13eb95
| branch: b1
| tag: tip
| parent: 1:33674427026e
| user: ...
| date: ...
| summary: Third commit on branch b1
|
| o changeset: 2:0ad872ebd9b9
|/ branch: b1
| user: ...
| date: ...
| summary: Second commit on branch b1
|
o changeset: 1:33674427026e
| branch: b1
| user: ...
| date: ...
| summary: First commit on branch b1
|
o changeset: 0:18c33e4b94ed
user: ...
date: ...
summary: First commit
这似乎有点反直觉。另一方面,书签就像从父提交移动到子提交的标签。他们保证只在一个头上。如果您尝试使用名为b1的书签重现上述提交图,则变更集#3将不会获得书签名称 - 它将是匿名的:
@ changeset: 3:c4dd0b7f9844
| tag: tip
| parent: 1:0c00681b3cfa
| user: ...
| date: ...
| summary: Third commit (on bookmark b1 or...?)
|
| o changeset: 2:f4e700efd4a6
|/ bookmark: b1
| user: ...
| date: ...
| summary: Second commit on bookmark b1
|
o changeset: 1:0c00681b3cfa
| user: ...
| date: ...
| summary: First commit on bookmark b1
|
o changeset: 0:f2cc94a68cf0
user: ...
date: ...
summary: First commit
在我看来,与分支应该是什么相关的更多 - 一个发展线。
现在,回答你关于用例的问题:鉴于上述情况,你会想要在你已经使用命名分支的仓库中使用书签...你在命名分支中有多个头并想要命名那些