From: Johannes Sixt Date: Wed, 8 Jan 2014 16:33:44 +0000 (+0100) Subject: mv: let 'git mv file no-such-dir/' error out on Windows, too X-Git-Tag: v1.8.5.3~4^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a8933469309c492ad69af3f25bfddc7b245ab9c3;p=thirdparty%2Fgit.git mv: let 'git mv file no-such-dir/' error out on Windows, too The previous commit c57f628 (mv: let 'git mv file no-such-dir/' error out) relies on that rename("file", "no-such-dir/") fails if the directory does not exist (note the trailing slash). This does not work as expected on Windows: This rename() call does not fail, but renames "file" to "no-such-dir" (not to "no-such-dir/file"). Insert an explicit check for this case to force an error. This changes the error message from $ git mv file no-such-dir/ fatal: renaming 'file' failed: Not a directory to $ git mv file no-such-dir/ fatal: destination directory does not exist, source=file, destination=no-such-dir/ Signed-off-by: Johannes Sixt Signed-off-by: Junio C Hamano --- diff --git a/builtin/mv.c b/builtin/mv.c index 08fbc033e4..21c46d1636 100644 --- a/builtin/mv.c +++ b/builtin/mv.c @@ -214,6 +214,8 @@ int cmd_mv(int argc, const char **argv, const char *prefix) } } else if (string_list_has_string(&src_for_dst, dst)) bad = _("multiple sources for the same target"); + else if (is_dir_sep(dst[strlen(dst) - 1])) + bad = _("destination directory does not exist"); else string_list_insert(&src_for_dst, dst);