Mercurial:克隆时显式指定分支/标记/书签

时间:2015-04-28 13:35:10

标签: mercurial

在mercurial repo中,您可以使用相同名称的分支,标签和书签。 hg help revsets告诉您如何明确指定。我认为这可以用于例如

hg update 'branch(foo)'

但不是

hg clone --updaterev 'branch(foo)' somerepo

即使

,也会出现错误abort: unknown revision 'branch(foo)'!
hg clone --updaterev 'foo' somerepo
只要没有名称冲突,

就可以正常工作(给我分支)。我对标签也一样。 有没有办法在克隆时直接显式指定分支/标记/书签?

1 个答案:

答案 0 :(得分:1)

你需要:

  • 了解Mercurial
  • 中revset和单个修订版本之间的区别
  • 了解--updaterev在幕后使用revsets语言(hg help revsets),而分支(ID)将在修订版中使用所有更改集返回revset,但--updaterev需要单一变更

我懒得同时测试--updaterev包含其中所有3个对象的repo,但是(对于分支情况)--updaterev 'foo'在操作之前内部定义了foo的头部

  

有没有办法直接明确指定分支/标签/书签   什么时候克隆?

是。只需在revset-definition中使用正确的谓词,它可以在每次更改集时唯一标识您需要的

  • 分支:branch(foo) and head()或者,对于多头分支,类似last(heads(branch(foo)))
  • 书签:bookmark(foo)
  • 标记:tag(foo)