[PATCH 0/3] Turn off directory rename detection in am -3
- From
Elijah Newren <newren@gmail.com>
- Date
- Aug 29, 2018, 07:06 UTC
- Message-ID
- <20180829070613.11793-1-newren@gmail.com>
- In-Reply-To
- <xmqqh8jeh1id.fsf@gitster-ct.c.googlers.com>
On Tue, Aug 28, 2018 at 9:58 AM Junio C Hamano <gitster@pobox.com> wrote:
Show 17 quoted lines
> Elijah Newren <newren@gmail.com> 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
machinerybuiltin/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