Re: [PATCH v2 1/1] git mv foo FOO ; git mv foo bar gave an assert
From: Junio C Hamano <hidden>
Date: 2021-03-01 19:24:56
tboegi@web.de writes:
From: Torsten Bögershausen <redacted> The following sequence, on a case-insensitive file system, (strictly speeking with core.ignorecase=true) leads to an assertion, and leaves .git/index.lock behind.
"an assertion failure", I presume?
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". Reported-By: Dan Moseley <redacted> This fixes https://github.com/git-for-windows/git/issues/2920 Signed-off-by: Torsten Bögershausen <redacted>
By breaking the list of trailers with an unrelated comment in the middle, the "Reported-by" won't be recognized as a trailer. We'd want to credit non-authorship contribution in the release notes starting in the upcoming release, and this will start mattering. Please fix it.
quoted hunk
@@ -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))) {
Good finding.
Before the problematic patch, this used to be
} else if (cache_name_pos(src, length) < 0)
I wonder if we should revert the change to use cache_file_exists()
in the first place (and rewrite the subsequent use of ce to match),
though.
Thanks.