git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff King <peff@peff.net>
To: Jari Aalto <jari.aalto@cante.net>
Cc: git@vger.kernel.org
Subject: [PATCH 3/5] mv: make non-directory destination error more clear
Date: Mon, 12 Dec 2011 02:51:36 -0500	[thread overview]
Message-ID: <20111212075136.GC17532@sigill.intra.peff.net> (raw)
In-Reply-To: <20111212074503.GB16511@sigill.intra.peff.net>

If you try to "git mv" multiple files onto another
non-directory file, you confusingly get the "usage" message:

  $ touch one two three
  $ git add .
  $ git mv one two three
  usage: git mv [options] <source>... <destination>
  [...]

>From the user's perspective, that makes no sense. They just
gave parameters that exactly match that usage!

This behavior dates back to the original C version of "git
mv", which had a usage message like:

  usage: git mv (<source> <destination> | <source>...  <destination>)

This was slightly less confusing, because it at least
mentions that there are two ways to invoke (but it still
isn't clear why what the user provided doesn't work).

Instead, let's show an error message like:

  $ git mv one two three
  fatal: destination 'three' is not a directory

We could leave the usage message in place, too, but it
doesn't actually help here. It contains no hints that there
are two forms, nor that multi-file form requires that the
endpoint be a directory. So it just becomes useless noise
that distracts from the real error.

Signed-off-by: Jeff King <peff@peff.net>
---
 builtin/mv.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/builtin/mv.c b/builtin/mv.c
index 11abaf5..ae6c30c 100644
--- a/builtin/mv.c
+++ b/builtin/mv.c
@@ -94,7 +94,7 @@ int cmd_mv(int argc, const char **argv, const char *prefix)
 		destination = copy_pathspec(dest_path[0], argv, argc, 1);
 	} else {
 		if (argc != 1)
-			usage_with_options(builtin_mv_usage, builtin_mv_options);
+			die("destination '%s' is not a directory", dest_path[0]);
 		destination = dest_path;
 	}
 
-- 
1.7.8.13.g74677

  parent reply	other threads:[~2011-12-12  7:51 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-11 21:22 git 1.7.7.3: BUG - please make git mv -f quiet Jari Aalto
2011-12-12  7:45 ` [PATCH 0/5] mixed bag of minor "git mv" fixes Jeff King
2011-12-12  7:50   ` [PATCH 1/5] docs: mention "-k" for both forms of "git mv" Jeff King
2011-12-12 19:52     ` Junio C Hamano
2011-12-12  7:51   ` [PATCH 2/5] mv: honor --verbose flag Jeff King
2011-12-12 19:53     ` Junio C Hamano
2011-12-12 21:45       ` Jeff King
2011-12-12  7:51   ` Jeff King [this message]
2011-12-12 19:55     ` [PATCH 3/5] mv: make non-directory destination error more clear Junio C Hamano
2011-12-12  7:52   ` [PATCH 4/5] mv: improve overwrite warning Jeff King
2011-12-12 19:57     ` Junio C Hamano
2011-12-12 21:52       ` Jeff King
2011-12-12 21:54         ` [PATCHv2 " Jeff King
2011-12-12 21:54         ` [PATCHv2 5/5] mv: be quiet about overwriting Jeff King
2011-12-12  7:54   ` [PATCH " Jeff King
2011-12-12 19:59     ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20111212075136.GC17532@sigill.intra.peff.net \
    --to=peff@peff.net \
    --cc=git@vger.kernel.org \
    --cc=jari.aalto@cante.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).