On Tue, Aug 28, 2018 at 9:58 AM Junio C Hamano <[email protected]> wrote:
> Elijah Newren <[email protected]> writes:
>
> > - Add a flag to turn off directory rename detection, and set the
> > flag for every call from am.c in order to avoid problems like this.
>
> I'd say this is the only practical solution, before you deprecate
> the "pipe format-patch output to am -3" style of "git rebase" (and
> optionally replace with something else).
>
> The whole point of "am -3" is to do _better_ than just "patch" with
> minimum amount of information available on the pre- and post- image
> blobs, without knowing the remainder of the tree that the patch did
> not touch. It is not surprising that the heuristics that look at
> the unchanging part of the tree to infer renames that may or may not
> exist guesses incorrectly, either with false positive or negative.
> In the context of "rebase", we always have all the trees that are
> involved. We should be able to do better than "am -3".
Here are patches to do so; they are built on the top of
en/rebase-consistency, since I wanted to re-use some test code and the
testfile introduced in that series, and to keep similar tests
together.
Elijah Newren (3):
t3401: add another directory rename testcase for rebase and am
merge-recursive: add ability to turn off directory rename detection
am: avoid directory rename detection when calling recursive merge
machinery
builtin/am.c | 1 +
merge-recursive.c | 18 ++++--
merge-recursive.h | 1 +
t/t3401-rebase-and-am-rename.sh | 110 +++++++++++++++++++++++++++++++-
4 files changed, 124 insertions(+), 6 deletions(-)
--
2.18.0.12.g97a29da30a