[PATCH 4/4] revision: turn off object/refname ambiguity check for --stdin
- From
Jeff King <peff@peff.net>
- Date
- Jan 7, 2014, 22:11 UTC
- 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 <peff@peff.net> --- 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