diff options
author | Junio C Hamano <gitster@pobox.com> | 2008-11-10 15:49:03 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-07-23 14:44:38 -0700 |
commit | 18cdf802ca6e2772b5901f786f59de3843299b1c (patch) | |
tree | fbfb9bbf456c2c9a5280c4522dac85fd4c56e9d6 /builtin | |
parent | t4150 (am): futureproof against failing tests (diff) | |
download | tgif-18cdf802ca6e2772b5901f786f59de3843299b1c.tar.xz |
Teach "apply --index-info" to handle rename patches
With v1.5.3.2~14 (apply --index-info: fall back to current index for
mode changes, 2007-09-17), git apply learned to stop worrying
about the lack of diff index line when a file already present in the
current index had no content change.
But it still worries too much: for rename patches, it is checking
that both the old and new filename are present in the current
index. This makes no sense, since a file rename generally
involves creating a file there was none before.
So just check the old filename.
Noticed while trying to use “git rebase” with diff.renames = copies.
[jn: add tests]
Reported-by: David D. Kilzer <ddkilzer@kilzer.net>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/apply.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/builtin/apply.c b/builtin/apply.c index 12ef9ea8af..f38c1f7b88 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -2979,8 +2979,7 @@ static void build_fake_ancestor(struct patch *list, const char *filename) else if (get_sha1(patch->old_sha1_prefix, sha1)) /* git diff has no index line for mode/type changes */ if (!patch->lines_added && !patch->lines_deleted) { - if (get_current_sha1(patch->new_name, sha1) || - get_current_sha1(patch->old_name, sha1)) + if (get_current_sha1(patch->old_name, sha1)) die("mode change for %s, which is not " "in current HEAD", name); sha1_ptr = sha1; |