Subject: rev-list --reverse --full-history --parents with path limiter disconnects history

From: Johannes Sixt <[email-masked]>
Date: Thu, 21 Aug 2008 18:27:50 +0200

Attached is a repository (to be imported via git fast-import) that has
such a history:

o--o--A--B--o
 \           \
  o--o--C-----M--o--X   <- master

where the A,B,C touch path P2 such that P2 is the same after B and C.
Commit X touches P2 as well.

This command does not give the expected result: It reports *two* initial
commits and one merge; in particular, commit X is reported as initial commit.

$ git rev-list --parents --reverse --full-history master -- P2

This command gives the expected result, i.e. there is one initial commit,
one merge, and some more regular commits:

$ git rev-list --parents --full-history master -- P2

And this works as well, i.e there is a linear history that omits the
branch via C:

$ git rev-list --parents --reverse master -- P2

Please help!

BTW, I've observed this behavior earlier when I debugged David Tweed's
repository, after which we removed --full-history from git-filter-branch.
But I could not easily find a simple history that exposes the problem. Now
I have such a history.

BTW2, using --simplify-merges instead of --full-history has the same
problem (but I don't think that comes as a surprise).

-- Hannes