【问题标题】:Create new heads in mercurial在 mercurial 中创建新头像
【发布时间】:2013-03-05 20:28:54
【问题描述】:

在我当前的工作流程中,每当我需要一个分支时,我都会使用书签,但为了从当前修订版创建一个新的头,我必须提交一些虚拟更改并返回一个修订版,然后提交,否则提交将无论我有多少个书签,都要保持一致。

例如,假设我在 40 版:

hg bookmark main
hg ci somefile -m 'dummy commit' # on rev 41 now
hg up -r 40
# make some changes
hg ci -A -m 'changes in bookmark' # created new head
hg bookmark test

这是常见的还是有一些捷径可以强制创建一个新的头部?

【问题讨论】:

    标签: mercurial branch


    【解决方案1】:

    在您的示例中无需创建第二个头部,也不应强制创建它。

    您的工作流程的优点是您可以停止功能 test 的工作,以便对主分支进行更紧急的更改,如下所示:

    > hg bookmark main
    > hg bookmark test         # Start work on feature test
    
     ... do some code ...
    
    > hg commit -m "Working on feature test"
    > hg update main           # Stop working on test, start working on main
    
     ... do an urgent fix ...
    
    > hg commit -m "Urgent fix"
    > hg update test           # Back to work on feature test
    
     ... do some more code ...
    
    > hg update main           # Finished the work so back to main
    > hg merge test            # Merge the work into main
    > hg commit -m "Merge in feature test"
    

    完成后,您将完成新功能并将其合并回主开发分支。

    如果您在完成功能 test 的工作后未对 main 分支进行任何更改,那么您将无法合并更改,因为您无法将变更集合并到祖先中,因此您可以需要将main书签移动到test书签如下:

    > hg update test
    > hg bookmark main -f
    

    (我相信这在git 中被称为快进合并,您可以根据需要强制合并,但据我所知没有mercurial 等效项)

    【讨论】:

    • 我明白了,但是当我创建两个书签并提交时,更改是写入一个还是两个?
    • 知道了,它只提交到活动书签,这正是我想要的,有很多过时的帖子“git vs mercurial”说旧版本很难知道什么是有效的,直到你自己测试一下。
    【解决方案2】:

    我想你想练习nvie的工作流程,所以你想用--no-ff与上游合并。

    据我所知,hg 不支持与同一分支中的上游合并。正如post 所说,hg 的 head/bookmark 是 git't 分支,而 hg 的分支是 lineage。

    因此,解决方案是在分叉点,您同时更改书签和分支,然后您可以合并分支,因为它们是不同的沿袭。

    在我的示例中,您可以轻松地hg branch -f dev,即使它们没有连接也可以重新打开分支。

    所以你可以有这样的分支:

    • 默认
    • 稳定
    • 功能
    • 修补程序

    那么书签的前缀应该是:

    • 功能-*
    • 修补程序-*

    它们应该从相应的分支分支出来。

    那么他们可以是

    【讨论】:

    • 我没有上游,只有本地,我正在使用书签来避免分支,只是测试一些更改。
    • @dhunter 很抱歉误解了您的需求。是的,当hg up BOOKMARK-NAME时,书签将被激活。
    • 无需道歉,感谢您的关心。
    • 我一直在查看 nvie 的工作流程,它非常完整,但我公司还没有其他人使用 hg,所以现在可以使用更简单的方法。
    • @dhunter 我同意,在我的团队中,我们遵循 hg 的工作流程,默认/稳定工作得很好。我认为 hg 的方法是鼓励人们升级到最新的稳定版,从而使维护变得更加容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多