很多"git对hg";解释将Mercurial书签与通常的git分支在功能上保持一致。我试图理解的不是Mercurial分支和git分支之间的区别,而是书签和来自Evolve扩展的主题之间的区别。
我发现的一个重要区别是,主题名称嵌入到每个提交中,而书签只是从一个提交移动到另一个提交的标签。但它意味着什么呢?其他区别是什么?
但它包含什么?
Bookmark是指向单个变更集的(可变(指针,主题(毕竟(是";经典的";hg分支与大多数分支特定的东西
还有什么区别?
Topic分支是轻量级分支,在完成更改(移动到公共阶段(时会消失。书签必须手动删除。
书签可以(轻松(在存储库之间推拉。主题交换(如主题(需要通过非发布服务器执行一些额外操作。
主题教程中的主题生命周期示例(缩短(
在推送之前与主题回购
>hg log --graph --rev "topic('food')"
@ changeset: 2:86d4fa8dfae9
| tag: tip
| topic: food
| user: lazybadger
| date: Wed Oct 12 15:49:32 2022 +0500
| summary: Adding fruits
|
o changeset: 1:c7451c53346d
| topic: food
| user: lazybadger
| date: Wed Oct 12 15:47:26 2022 +0500
| summary: Adding condiments
|
o changeset: 0:e4aaf76d4cb3
topic: food
user: lazybadger
date: Wed Oct 12 15:44:28 2022 +0500
summary: Shopping list
因为food
是在default
的基础上创建的
>hg stack
### topic: food
### target: default (branch)
s3@ Adding fruits (current)
s2: Adding condiments
s1: Shopping list
在推送到发布服务器后,我得到了相同的变更集,只是在目标分支中只有
>hg log --graph
@ changeset: 2:86d4fa8dfae9
| tag: tip
| user: lazybadger
| date: Wed Oct 12 15:49:32 2022 +0500
| summary: Adding fruits
|
o changeset: 1:c7451c53346d
| user: lazybadger
| date: Wed Oct 12 15:47:26 2022 +0500
| summary: Adding condiments
|
o changeset: 0:e4aaf76d4cb3
user: lazybadger
date: Wed Oct 12 15:44:28 2022 +0500
summary: Shopping list