Instead of breaking execution when no remote (as specified in the variable dest) is specified when git-ls-remote is invoked, continue on and let remote_get() handle it. That way, we are able to use the default remote (by default, "origin"), as git-fetch, git-push, and others, do. While we're at it, die with a more interesting message ("Where do you want to..."), as git-fetch does, instead of the plain usage help. Add several tests to check that git-ls-remote handles the no-remote-specified situation. Signed-off-by: Tay Ray Chuan <rctay89@xxxxxxxxx> --- builtin/ls-remote.c | 5 ++--- t/t5512-ls-remote.sh | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/builtin/ls-remote.c b/builtin/ls-remote.c index 70f5622..dfada83 100644 --- a/builtin/ls-remote.c +++ b/builtin/ls-remote.c @@ -73,9 +73,6 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix) break; } - if (!dest) - usage(ls_remote_usage); - if (argv[i]) { int j; pattern = xcalloc(sizeof(const char *), argc - i + 1); @@ -87,6 +84,8 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix) } } remote = remote_get(dest); + if (!remote) + die("Where do you want to list from today?"); if (!remote->url_nr) die("remote %s has no configured URL", dest); transport = transport_get(remote, NULL); diff --git a/t/t5512-ls-remote.sh b/t/t5512-ls-remote.sh index 1dd8eed..e19429b 100755 --- a/t/t5512-ls-remote.sh +++ b/t/t5512-ls-remote.sh @@ -49,4 +49,41 @@ test_expect_success 'ls-remote self' ' ' +cat >exp <<EOF +fatal: Where do you want to list from today? +EOF +test_expect_success 'dies with message when no remote specified and no default remote found' ' + + !(git ls-remote >actual 2>&1) && + test_cmp exp actual + +' + +test_expect_success 'defaults to "origin" when no remote specified' ' + + git remote add origin "$(pwd)/.git" + git ls-remote >actual && + test_cmp expected.all actual + +' + +cat >exp <<EOF +fatal: 'refs*master' does not appear to be a git repository +fatal: The remote end hung up unexpectedly +EOF +test_expect_success 'confuses pattern as remote when no remote specified' ' + # + # Although ugly, this behaviour is akin to the confusion of refspecs for + # remotes by git-fetch and git-push, eg: + # + # $ git fetch branch + # + + # We could just as easily have used "master"; the "*" emphasizes its + # role as a pattern. + !(git ls-remote refs*master >actual 2>&1) && + test_cmp exp actual + +' + test_done -- 1.7.0.97.g1372c -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html