Mercurial - 如何推动未完成的分支?

时间:2010-10-08 20:44:38

标签: mercurial branch repository

我们将所有内容转换为来自CVS的Mercurial,到目前为止一切顺利。我们今天遇到的一个问题是这种情况。

在转移到Mercurial之前,我暂时还有一些待定的更改,这些功能已经启动,后来因各种原因推迟。可能的是,其他人将从我离开的地方起几个月后完成这些功能。

在克隆新的Mercurial存储库后,我创建了单独的分支来隔离这些功能。

它给我留下了这样的东西(由转号编号)

hg update default
hg branch feature1
hg commit -m "Description of what I was doing in feature1"
hg update default 
hg branch feature2
hg commit -m "Description of what I was doing feature2" (my tip is now here)
hg update default
hg push -f (to force the creation of my new branches, w/o affecting default, I haven't merged them)

在此过程中,团队一直在努力推进我们的中央存储库,所以默认分支是说转40(小费)

现在我的推-f 工作正常,但定位(提示)到我的最新更改 - > 50:feature3(提示)。我期待提示在中央存储库中保持默认状态,只是让我的分支在那里,以便有人随时接收它们。当我使用hgwebdir时,图表看起来也很有趣,所以我很确定这是错误的方法。

我该怎么做?我应该先关闭分支机构吗?提示实际上很重要,或者只是元数据。

3 个答案:

答案 0 :(得分:4)

tip始终是添加到存储库的最新变更集。来自hg help revs

  

保留名称“tip”是一个特殊标记,始终标识最新版本。

只要默认分支的头部符合您的预期,您就可以了。无需关闭分支(但如果您的Mercurial版本足够新以支持它,则最好使用hg push --new-branch)。

答案 1 :(得分:1)

tip只是一个自动应用的标签,指的是(我认为)最近的提交。没有大碍;它只是为了方便起见。

答案 2 :(得分:1)

tip标签是纯元数据,并始终指向具有最高版本号的变更集 - 没有更多逻辑。

但是,tip现在指向功能分支上的变更集这一事实不会给您带来任何麻烦。当人们进行克隆时,他们会自动更新为 default分支上的最多变更集。所以他们可以在克隆后立即开始工作。此外,已经拥有克隆的人员在运行hg update时将留在他们的命名分支上。此处hg update会将您带到该命名分支上的最末端变更集,例如default,如果这是您开始的位置。

人们可能会认为hg update tiphg update相同,但只有在没有命名分支时才会这样。使用命名分支,提供明确的修订名称(例如tip)可以更改您的命名分支 - 普通hg update不能。