Consider this simple history:
@ 3 modify y | o 2 copy x to y, modify x | | o 1 copy x to y, modify x |/ o 0 add x
If we now rebase commit 3 onto 1, Mercurial will look for copies
between commit 2 and commit 1. It does that by going backwards from 2
to 0 and then forwards from 0 to 1. It will find that x was copied to
y, since that was what happened on the path between them (namely in
commit 1). That leads Mercurial to do a 3-way merge between y@3 and
y@1 with x@2 as base. We want to use y@2 as base instead. That's also
what happened until commit 1d6d1a15. This patch fixes the regression
by adding another filtering step when chaining copies via a
diffbase. The new filtering step removes copies that were the same
between the two branches (same source and destination, but not
necessarily the same contents).