diff options
author | Torsten Bögershausen <tboegi@web.de> | 2021-03-01 21:41:42 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-03-04 01:07:12 (GMT) |
commit | 93c3d297b5060a59715b8e8bc719d8e60ecf8106 (patch) | |
tree | dfa81715b43454a1f2509394a54321ffcde0dfb9 /builtin | |
parent | 9b906af657d4ec0bc8fc01c5cbbbddb582a8cac6 (diff) | |
download | git-93c3d297b5060a59715b8e8bc719d8e60ecf8106.zip git-93c3d297b5060a59715b8e8bc719d8e60ecf8106.tar.gz git-93c3d297b5060a59715b8e8bc719d8e60ecf8106.tar.bz2 |
git mv foo FOO ; git mv foo bar gave an assert
The following sequence, on a case-insensitive file system,
(strictly speeking with core.ignorecase=true)
leads to an assertion failure and leaves .git/index.lock behind.
git init
echo foo >foo
git add foo
git mv foo FOO
git mv foo bar
This regression was introduced in Commit 9b906af657,
"git-mv: improve error message for conflicted file"
The bugfix is to change the "file exist case-insensitive in the index"
into the correct "file exist (case-sensitive) in the index".
This avoids the "assert" later in the code and keeps setting up the
"ce" pointer for ce_stage(ce) done in the next else if.
This fixes
https://github.com/git-for-windows/git/issues/2920
Reported-By: Dan Moseley <Dan.Moseley@microsoft.com>
Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin')
-rw-r--r-- | builtin/mv.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/mv.c b/builtin/mv.c index 7dac714..3fccdcb 100644 --- a/builtin/mv.c +++ b/builtin/mv.c @@ -221,7 +221,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix) } argc += last - first; } - } else if (!(ce = cache_file_exists(src, length, ignore_case))) { + } else if (!(ce = cache_file_exists(src, length, 0))) { bad = _("not under version control"); } else if (ce_stage(ce)) { bad = _("conflicted"); |