[PATCH 0/3] Turn off directory rename detection in am -3
From: Elijah Newren <hidden>
Date: 2018-08-29 07:06:24
On Tue, Aug 28, 2018 at 9:58 AM Junio C Hamano [off-list ref] wrote:
Elijah Newren [off-list ref] writes:quoted
- 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