Merge branch 'ms/ls-remote-exit-with-status'
* ms/ls-remote-exit-with-status: ls-remote: the --exit-code option reports "no matching refs"
This commit is contained in:
commit
3c0ae619e6
@ -10,7 +10,7 @@ SYNOPSIS
|
|||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git ls-remote' [--heads] [--tags] [-u <exec> | --upload-pack <exec>]
|
'git ls-remote' [--heads] [--tags] [-u <exec> | --upload-pack <exec>]
|
||||||
<repository> [<refs>...]
|
[--exit-code] <repository> [<refs>...]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -36,6 +36,12 @@ OPTIONS
|
|||||||
SSH and where the SSH daemon does not use the PATH configured by the
|
SSH and where the SSH daemon does not use the PATH configured by the
|
||||||
user.
|
user.
|
||||||
|
|
||||||
|
--exit-code::
|
||||||
|
Exit with status "2" when no matching refs are found in the remote
|
||||||
|
repository. Usually the command exits with status "0" to indicate
|
||||||
|
it successfully talked with the remote repository, whether it
|
||||||
|
found any matching refs.
|
||||||
|
|
||||||
<repository>::
|
<repository>::
|
||||||
Location of the repository. The shorthand defined in
|
Location of the repository. The shorthand defined in
|
||||||
$GIT_DIR/branches/ can be used. Use "." (dot) to list references in
|
$GIT_DIR/branches/ can be used. Use "." (dot) to list references in
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
static const char ls_remote_usage[] =
|
static const char ls_remote_usage[] =
|
||||||
"git ls-remote [--heads] [--tags] [-u <exec> | --upload-pack <exec>]\n"
|
"git ls-remote [--heads] [--tags] [-u <exec> | --upload-pack <exec>]\n"
|
||||||
" [-q|--quiet] [<repository> [<refs>...]]";
|
" [-q|--quiet] [--exit-code] [<repository> [<refs>...]]";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Is there one among the list of patterns that match the tail part
|
* Is there one among the list of patterns that match the tail part
|
||||||
@ -35,6 +35,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
|||||||
unsigned flags = 0;
|
unsigned flags = 0;
|
||||||
int get_url = 0;
|
int get_url = 0;
|
||||||
int quiet = 0;
|
int quiet = 0;
|
||||||
|
int status = 0;
|
||||||
const char *uploadpack = NULL;
|
const char *uploadpack = NULL;
|
||||||
const char **pattern = NULL;
|
const char **pattern = NULL;
|
||||||
|
|
||||||
@ -74,6 +75,11 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
|||||||
get_url = 1;
|
get_url = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (!strcmp("--exit-code", arg)) {
|
||||||
|
/* return this code if no refs are reported */
|
||||||
|
status = 2;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
usage(ls_remote_usage);
|
usage(ls_remote_usage);
|
||||||
}
|
}
|
||||||
dest = arg;
|
dest = arg;
|
||||||
@ -121,6 +127,7 @@ int cmd_ls_remote(int argc, const char **argv, const char *prefix)
|
|||||||
if (!tail_match(pattern, ref->name))
|
if (!tail_match(pattern, ref->name))
|
||||||
continue;
|
continue;
|
||||||
printf("%s %s\n", sha1_to_hex(ref->old_sha1), ref->name);
|
printf("%s %s\n", sha1_to_hex(ref->old_sha1), ref->name);
|
||||||
|
status = 0; /* we found something */
|
||||||
}
|
}
|
||||||
return 0;
|
return status;
|
||||||
}
|
}
|
||||||
|
@ -123,4 +123,28 @@ test_expect_success 'confuses pattern as remote when no remote specified' '
|
|||||||
|
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'die with non-2 for wrong repository even with --exit-code' '
|
||||||
|
git ls-remote --exit-code ./no-such-repository ;# not &&
|
||||||
|
status=$? &&
|
||||||
|
test $status != 2 && test $status != 0
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Report success even when nothing matches' '
|
||||||
|
git ls-remote other.git "refs/nsn/*" >actual &&
|
||||||
|
>expect &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Report no-match with --exit-code' '
|
||||||
|
test_expect_code 2 git ls-remote --exit-code other.git "refs/nsn/*" >actual &&
|
||||||
|
>expect &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'Report match with --exit-code' '
|
||||||
|
git ls-remote --exit-code other.git "refs/tags/*" >actual &&
|
||||||
|
git ls-remote . tags/mark >expect &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
Loading…
Reference in New Issue
Block a user