Merge branch 'jk/rev-list-stdin-noop-is-ok'
"git rev-list --stdin </dev/null" used to be an error; it now shows no output without an error. "git rev-list --stdin --default HEAD" still falls back to the given default when nothing is given on the standard input. * jk/rev-list-stdin-noop-is-ok: rev-list: make empty --stdin not an error
This commit is contained in:
commit
8b6f6075be
@ -493,7 +493,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
|
|||||||
if ((!revs.commits && reflog_walk_empty(revs.reflog_info) &&
|
if ((!revs.commits && reflog_walk_empty(revs.reflog_info) &&
|
||||||
(!(revs.tag_objects || revs.tree_objects || revs.blob_objects) &&
|
(!(revs.tag_objects || revs.tree_objects || revs.blob_objects) &&
|
||||||
!revs.pending.nr) &&
|
!revs.pending.nr) &&
|
||||||
!revs.rev_input_given) ||
|
!revs.rev_input_given && !revs.read_from_stdin) ||
|
||||||
revs.diff)
|
revs.diff)
|
||||||
usage(rev_list_usage);
|
usage(rev_list_usage);
|
||||||
|
|
||||||
|
@ -2318,7 +2318,7 @@ static void NORETURN diagnose_missing_default(const char *def)
|
|||||||
*/
|
*/
|
||||||
int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct setup_revision_opt *opt)
|
int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct setup_revision_opt *opt)
|
||||||
{
|
{
|
||||||
int i, flags, left, seen_dashdash, read_from_stdin, got_rev_arg = 0, revarg_opt;
|
int i, flags, left, seen_dashdash, got_rev_arg = 0, revarg_opt;
|
||||||
struct argv_array prune_data = ARGV_ARRAY_INIT;
|
struct argv_array prune_data = ARGV_ARRAY_INIT;
|
||||||
const char *submodule = NULL;
|
const char *submodule = NULL;
|
||||||
|
|
||||||
@ -2348,7 +2348,6 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
|
|||||||
revarg_opt = opt ? opt->revarg_opt : 0;
|
revarg_opt = opt ? opt->revarg_opt : 0;
|
||||||
if (seen_dashdash)
|
if (seen_dashdash)
|
||||||
revarg_opt |= REVARG_CANNOT_BE_FILENAME;
|
revarg_opt |= REVARG_CANNOT_BE_FILENAME;
|
||||||
read_from_stdin = 0;
|
|
||||||
for (left = i = 1; i < argc; i++) {
|
for (left = i = 1; i < argc; i++) {
|
||||||
const char *arg = argv[i];
|
const char *arg = argv[i];
|
||||||
if (*arg == '-') {
|
if (*arg == '-') {
|
||||||
@ -2367,7 +2366,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, struct s
|
|||||||
argv[left++] = arg;
|
argv[left++] = arg;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (read_from_stdin++)
|
if (revs->read_from_stdin++)
|
||||||
die("--stdin given twice?");
|
die("--stdin given twice?");
|
||||||
read_revisions_from_stdin(revs, &prune_data);
|
read_revisions_from_stdin(revs, &prune_data);
|
||||||
continue;
|
continue;
|
||||||
|
@ -82,6 +82,11 @@ struct rev_info {
|
|||||||
*/
|
*/
|
||||||
int rev_input_given;
|
int rev_input_given;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Whether we read from stdin due to the --stdin option.
|
||||||
|
*/
|
||||||
|
int read_from_stdin;
|
||||||
|
|
||||||
/* topo-sort */
|
/* topo-sort */
|
||||||
enum rev_sort_order sort_order;
|
enum rev_sort_order sort_order;
|
||||||
|
|
||||||
|
@ -255,7 +255,7 @@ test_expect_success 'rev-list accumulates multiple --exclude' '
|
|||||||
compare rev-list "--exclude=refs/remotes/* --exclude=refs/tags/* --all" --branches
|
compare rev-list "--exclude=refs/remotes/* --exclude=refs/tags/* --all" --branches
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_failure 'rev-list should succeed with empty output on empty stdin' '
|
test_expect_success 'rev-list should succeed with empty output on empty stdin' '
|
||||||
git rev-list --stdin </dev/null >actual &&
|
git rev-list --stdin </dev/null >actual &&
|
||||||
test_must_be_empty actual
|
test_must_be_empty actual
|
||||||
'
|
'
|
||||||
|
Loading…
Reference in New Issue
Block a user