diff options
author | Johannes Sixt <j6t@kdbg.org> | 2014-01-08 17:33:44 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-01-10 11:28:12 -0800 |
commit | a8933469309c492ad69af3f25bfddc7b245ab9c3 (patch) | |
tree | 8adaa9ebe1c90de8e91f57463ed733cb24d09118 | |
parent | c57f6281ff847db7094d708f5c5b939d378f7120 (diff) | |
download | git-a8933469309c492ad69af3f25bfddc7b245ab9c3.tar.gz git-a8933469309c492ad69af3f25bfddc7b245ab9c3.tar.xz |
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 <j6t@kdbg.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/mv.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/builtin/mv.c b/builtin/mv.c index 08fbc033e..21c46d163 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); |