我有一个分支dev
已合并到release
分支中以形成发布提交。
我希望在合并提交之后重新打开dev
,以便我的存储库具有可视化的扇形扇出"样式。我的意思是所有的提交和分支都会聚合到我的发布提交中,然后为下一个版本工作分歧。这在视觉上使得很容易看到每个版本中包含的内容,因为它将它们隔离在我们的标记版本提交之间。
效果是dev
不再是一个连续的分支,我想知道这是否可能在mercurial中。
当我在发布后再次尝试hg branch dev
时,mercurial抱怨它已经存在。即使我在合并之后提交了--close-branch
。
所以目前我的解决方法是:
(1)对于每个版本使用不同的dev-VERSION
,这更加繁琐,更难以编写脚本或
(2)与dev
并行运行release
并继续从dev
合并到release
这对于我们特定的发布流程来说不是很糟糕
我知道这看起来像是一个非标准的mercurial发布过程。它虽然适合我们特定的项目和团队结构。
感谢您的帮助!
修改:
为了使我的意思更清楚一点,想象我已将feature-01
分支合并到dev
,然后将dev
合并到release
以创建{{1} }}。然后我想创建一个新的release-1.1
分支,并将其合并到feature-02
中,其形象如下:
dev
这是一个示例bash脚本,我试图得到这样的东西:
@ changeset: 6:4bcc59fe6ded
|\ branch: dev
| | summary: Merge feature-02
| |
| o changeset: 5:8e117ffe64d0
| | branch: feature-02
| | summary: Add d
\ |
o changeset: 4:c39dae3ff2fa <---- all commits converge to here then diverge back out
/| branch: release
| | summary: Release v1.1
| |
o | changeset: 3:c89af2b3e8db
| | branch: dev
summary: Merge feature-01
如果我尝试在# Create test
rm -rf test
mkdir test
cd test
# Set up v1.0
hg init
hg branch release
touch a
hg commit -m 'Release v1.0'
# Set up dev branch
hg branch dev
touch b
hg add b
hg commit -m 'Created dev'
# Feature branch
hg branch feature-01
touch c
hg add c
hg commit -m 'Add c'
hg update dev
hg merge feature-01
hg commit -m 'Merge feature-01'
# Release all the things
hg update release
hg merge dev
hg commit -m 'Release v1.1'
# Start a new feature branch
hg update dev # <------ crucial line
hg branch feature-02
touch d
hg add d
hg commit -m 'Add d'
hg update dev
hg merge feature-02
hg commit -m 'Merge feature-02'
分支上继续feature-02
,那么当我希望它具有发布提交时,它最终会提交dev
作为其父级{ {1}}作为其父级,但仍位于3:e7ba9d1d9bfe
分支上。
4:bbc951a4b339
大致给出了这个输出:
dev
我可以更改我的进程,以便新版本之后的第一个功能分支直接从hg log -G
分支,但这使得该进程更难编写脚本,只是将问题延迟到我必须将其合并到{{ 1}}:
因此,如果我使用与上面相同的脚本,但稍微更改一下:
@ changeset: 6:46539f99dadd
|\ branch: dev
| | tag: tip
| | summary: Merge feature-02
| |
| o changeset: 5:885b0b930fed
|/ branch: feature-02
| summary: Add d
|
| o changeset: 4:bbc951a4b339 <--- not the parent of the new changes
|/| branch: release
| | summary: Release v1.1
| |
...
然后我的图表最终成为:
release
如果我尝试重新分配dev
:
...
# Start a new feature branch
#hg update dev
hg update release # <--- changed to release
hg branch feature-02
...
我收到错误:@ changeset: 6:4bcc59fe6ded <---- has the previous `dev` as a parent
|\ branch: dev
| | summary: Merge feature-02
| |
| o changeset: 5:8e117ffe64d0
| | branch: feature-02
| | summary: Add d
| |
| o changeset: 4:c39dae3ff2fa
|/| branch: release
| | summary: Release v1.1
| |
o | changeset: 3:c89af2b3e8db
|\ \ branch: dev
|| | summary: Merge feature-01
...
。
我希望这有助于让它更清晰!谢谢你的帮助!
答案 0 :(得分:1)
完成合并后,只需执行hg update dev
并开始提交。您不需要关闭并重新打开分支。您不需要创建新分支。