question on "hg head" and the head(), heads([set]) predicates
Matt Mackall
mpm at selenic.com
Thu Jun 25 20:22:55 UTC 2015
On Thu, 2015-06-25 at 17:49 +0200, Giovanni Gherdovich wrote:
> Hello,
>
> I encountered a behaviour I don't quite understand.
>
> Consider this toy repository:
>
> -------------------------------------------
> $ hg init
> $ touch foo ; hg add foo ; hg commit -m foo
> $ touch bar ; hg add bar ; hg commit -m bar
> $ hg branch quux ; hg commit -m 'branch quux'
> $ hg commit -m 'close branch quux' --close-branch
> $ hg up 0
> $ hg merge quux ; hg commit -m 'merged quux'
> $ hg up 0
> $ touch baz ; hg add baz ; hg commit -m baz
>
> $ hg log --graph --template '{rev}\t{branch}\t|{desc}\n'
>
> @ 5 default |baz
> |
> | o 4 default |merged quux
> |/|
> | _ 3 quux |close branch quux
> | |
> | o 2 quux |branch quux
> | |
> | o 1 default |bar
> |/
> o 0 default |foo
> -------------------------------------------
>
> Now, in this repo the branch default has 3 heads (1, 4, 5)
> two of which are topological heads (4, 5).
>
> I expected this command to give me csets 4 and 5,
> but it only says "5". Expected?
>
> -------------------------------------------
> $ hg heads --topo --rev "branch(default)" --template '{rev}\n'
> 5
Here, rev is expecting a single revision. So it turns "branch(default)"
into 5 (the highest numbered element of the set). Done.
> -------------------------------------------
>
> More over, I expected this revset expression
> to give me all heads of default, namely 1, 4, 5,
> but it only says "4, 5". Expected?
>
> -------------------------------------------
> $ hg log --rev "head() and branch(default)" --template '{rev}\n'
> 4
> 5
"head()"
Changeset is a named branch head.
1 is not a head of default because it has a descendant on default.
> -------------------------------------------
>
> And I also believed that the two revset expressions
>
> "head() and branch(default)"
> "heads(branch(default))"
"heads(set)"
Members of set with no children in set.
This predicate is purely about DAG topology and is unaware of named
branches.
--
Mathematics is the supreme nostalgia of our time.
More information about the Mercurial
mailing list