Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Mercurial: how to list merged changeset where the 2nd parent is from a specific branch?

Tags:

mercurial

I would like to find all changesets that are a merge from branchX to default.

So first parent of such changeset is on default and second parent of such changeset is on branchX.

Using hg log -r 'branch("default") & merge() we have all the merged changeset on default, regardless whether the second parent is branchX or not.

How can I modify the above revset to filter out merged changesets where the 2nd parent is on branchX only?

like image 856
Long Vu Avatar asked May 14 '12 17:05

Long Vu


1 Answers

This does it in my tests:

hg log -r "children(p2(branch(default)) & branch(branchX)) & merge()"

Explained:

p2(branch(default)) & branch(branchX) gets the changesets on branchX that are the second parent of a changeset on the default branch.

children() gets the children of those changesets

& merge() limits those children to those which are merge changesets. Without this condition you also get the child that is continuing branchX

Edit this does it better I think:

hg log -r "children(p2(branch(default)) & branch(branchX)) & branch(default)"

The first version would include changes on branchX that were merges from other branches just after a merge from branchX to default.

like image 79
Steve Kaye Avatar answered Oct 10 '22 05:10

Steve Kaye