From: Jeff King Date: Tue, 07 Jan 2014 22:11:18 GMT Subject: [PATCH 4/4] revision: turn off object/refname ambiguity check for --stdin Message-ID: <20140107221118.GD10161@sigill.intra.peff.net> In-Reply-To: <20140107220856.GA10074@sigill.intra.peff.net> We currently check that any 40-hex object name we receive is not also a refname, and output a warning if this is the case. When "rev-list --stdin" is used to receive object names, we may receive a large number of inputs, and the cost of checking each name as a ref is relatively high. Commit 25fba78d already dropped this warning for "cat-file --batch-check". The same reasoning applies for "rev-list --stdin". Let's disable the check in that instance. Here are before and after numbers: $ git rev-list --all >commits [before] $ best-of-five -i commits ./git rev-list --stdin --no-walk --pretty=raw real 0m0.675s user 0m0.552s sys 0m0.120s [after] $ best-of-five -i commits ./git rev-list --stdin --no-walk --pretty=raw real 0m0.415s user 0m0.400s sys 0m0.012s Signed-off-by: Jeff King --- Obviously we drop this one (and revert 25fba78d) if I can just make the check faster. revision.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/revision.c b/revision.c index a68fde6..87d04dd 100644 --- a/revision.c +++ b/revision.c @@ -1576,7 +1576,9 @@ static void read_revisions_from_stdin(struct rev_info *revs, { struct strbuf sb; int seen_dashdash = 0; + int save_warning = warn_on_object_refname_ambiguity; + warn_on_object_refname_ambiguity = 0; strbuf_init(&sb, 1000); while (strbuf_getwholeline(&sb, stdin, '\n') != EOF) { int len = sb.len; @@ -1595,6 +1597,7 @@ static void read_revisions_from_stdin(struct rev_info *revs, REVARG_CANNOT_BE_FILENAME)) die("bad revision '%s'", sb.buf); } + warn_on_object_refname_ambiguity = save_warning; if (seen_dashdash) read_pathspec_from_stdin(revs, &sb, prune); strbuf_release(&sb); -- 1.8.5.2.500.g8060133