]> git.ipfire.org Git - thirdparty/git.git/commitdiff
mv: fix error for moving directory to another
authorJunio C Hamano <gitster@pobox.com>
Sat, 12 Aug 2023 01:14:35 +0000 (18:14 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 12 Aug 2023 01:16:48 +0000 (18:16 -0700)
If both directories D1 and D2 already exists, and further there is a
filesystem entity D2/D1, "git mv D1 D2" would fail, and we get an
error message that says:

    "cannot move directory over file, source=D1, destination=D2/D1"

regardless of the type of existing "D2/D1".  If it is a file, the
message is correct, but if it is a directory, it is not (we could
make the D2/D1 directory a union of its original contents and what
was in D1/, but that is not what we do).

The code that decies to issue the error message only checks for
existence of "D2/D1" and does not care what kind of thing sits at
the path.

Rephrase the message to say

    "destination already exists, source=D1, destination=D2/D1"

that would be suitable for any kind of thing being in the way.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/mv.c

index 665bd274485f6c76403e9230539e2650073a47f3..80fc7a3c7029603a0fcaf9d15d8432ed799b4909 100644 (file)
@@ -304,7 +304,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
                }
                if (S_ISDIR(st.st_mode)
                    && lstat(dst, &st) == 0) {
-                       bad = _("cannot move directory over file");
+                       bad = _("destination already exists");
                        goto act_on_entry;
                }