Mercurial书签和'Git like branchching'

时间:2009-11-22 12:40:05

标签: git version-control mercurial dvcs

我没有运气使用Mercurial for Git中的书签,比如分支。

从文章https://www.mercurial-scm.org/wiki/BookmarksExtension开始,我在.hgrc文件中将“track.current”设置为true。

摘录如下:

  

默认情况下,当几个书签   指向相同的变更集,他们会   一起前进。它是   有可能获得更像Git的   添加以下内容的经验   .hgrc的配置选项

[bookmarks]
track.current = True

但是,一旦我开始尝试在多个书签上进行并行/独立开发,然后在书签之间来回切换,我会遇到以下情况:

abort: crosses branches (use 'hg merge' or 'hg update -C')

重现的例子:

# Make a new directory and Mercurial repository
$ mkdir bookmark
$ cd bookmark
$ hg init

# Create two bookmarks
$ hg bookmark bk1
$ hg bookmark bk2

# Checkout bk1
$ hg update bk1
0 files updated, 0 files merged, 0 files removed, 0 files unresolved

# Create and commit a file to bk1
$ touch bk1.txt
$ hg add
adding bk1.txt
$ hg commit -m "bk1 file"

# Checkout bk2
$ hg update bk2
0 files updated, 0 files merged, 1 files removed, 0 files unresolved

# Create and commit a file to bk2
$ touch bk2.txt
$ hg add
adding bk2.txt
$ hg commit -m "bk2 file"
created new head

# Checkout bk1
$ hg up bk1
abort: crosses branches (use 'hg merge' or 'hg update -C')

这是正常行为,因为在书签之间移动时会出现“交叉分支”强制合并或文件覆盖吗?

对于'Git-like experience',我希望能够在bk1和bk2之间来回翻动,在任何一个上提交和开发,在我需要的时候合并。

2 个答案:

答案 0 :(得分:16)

请升级到上周发布的Mercurial 1.4。然后,您将能够在没有警告的情况下在分支上的头之间切换。

答案 1 :(得分:2)

使用1.4之前的Mercurial版本,只要您的工作树是干净的(没有未提交的更改),您就可以提供-c标志。