diff options
author | Chris Torek <chris.torek@gmail.com> | 2020-07-20 06:17:52 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2020-07-20 14:35:43 -0700 |
commit | 9b906af657d4ec0bc8fc01c5cbbbddb582a8cac6 (patch) | |
tree | 7fed6466b79861f967bf3460a4070314012a294b /builtin/mv.c | |
parent | Git 2.26.2 (diff) | |
download | tgif-9b906af657d4ec0bc8fc01c5cbbbddb582a8cac6.tar.xz |
git-mv: improve error message for conflicted file
'git mv' has always complained about renaming a conflicted
file, as it cannot handle multiple index entries for one file.
However, the error message it uses has been the same as the
one for an untracked file:
fatal: not under version control, src=...
which is patently wrong. Distinguish the two cases and
add a test to make sure we produce the correct message.
Signed-off-by: Chris Torek <chris.torek@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/mv.c')
-rw-r--r-- | builtin/mv.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/builtin/mv.c b/builtin/mv.c index be15ba7044..7dac714af9 100644 --- a/builtin/mv.c +++ b/builtin/mv.c @@ -132,6 +132,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix) struct stat st; struct string_list src_for_dst = STRING_LIST_INIT_NODUP; struct lock_file lock_file = LOCK_INIT; + struct cache_entry *ce; git_config(git_default_config, NULL); @@ -220,9 +221,11 @@ int cmd_mv(int argc, const char **argv, const char *prefix) } argc += last - first; } - } else if (cache_name_pos(src, length) < 0) + } else if (!(ce = cache_file_exists(src, length, ignore_case))) { bad = _("not under version control"); - else if (lstat(dst, &st) == 0 && + } else if (ce_stage(ce)) { + bad = _("conflicted"); + } else if (lstat(dst, &st) == 0 && (!ignore_case || strcasecmp(src, dst))) { bad = _("destination exists"); if (force) { |