simplify-merges: drop merge from irrelevant side branch
commit4b7f53da7618e94985c9d9d5081b4bc44c45de2f
authorJunio C Hamano <gitster@pobox.com>
Thu, 17 Jan 2013 22:23:03 +0000 (17 14:23 -0800)
committerJunio C Hamano <gitster@pobox.com>
Thu, 17 Jan 2013 23:22:48 +0000 (17 15:22 -0800)
tree909a630447fce8467cd286342bf38ee269794c61
parentfaf0156b278d1a760362cda1d294a88be7608de4
simplify-merges: drop merge from irrelevant side branch

The merge simplification rule stated in 6546b59 (revision traversal:
show full history with merge simplification, 2008-07-31) still
treated merge commits too specially.  Namely, in a history with this
shape:

---o---o---M
          /
         x---x---x

where three 'x' were on a history completely unrelated to the main
history 'o' and do not touch any of the paths we are following, we
still said that after simplifying all of the parents of M, 'x'
(which is the leftmost 'x' that rightmost 'x simplifies down to) and
'o' (which would be the last commit on the main history that touches
the paths we are following) are independent from each other, and
both need to be kept.

That is incorrect; when the side branch 'x' never touches the paths,
it should be removed to allow M to simplify down to the last commit
on the main history that touches the paths.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
revision.c
t/t6012-rev-list-simplify.sh