在新位置继续mercurial分支

时间:2017-07-11 00:44:02

标签: mercurial

我有一个分支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 ...

我希望这有助于让它更清晰!谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

完成合并后,只需执行hg update dev并开始提交。您不需要关闭并重新打开分支。您不需要创建新分支。