diff options
| author | Junio C Hamano <gitster@pobox.com> | 2021-05-07 12:47:39 +0900 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2021-05-07 12:47:39 +0900 |
| commit | c108c8c2f2ff00b1b545ddb638bdfc40319dfa34 (patch) | |
| tree | 89e56bf7f83794a8e172998e8ea34929c6993a69 /ref-filter.c | |
| parent | bb2feec17f49e93e0b983c5d895b2bf590ff92f3 (diff) | |
| parent | 844c3f0b0b5cc45f8aa8bd65c7ad407df7301c39 (diff) | |
| download | git-c108c8c2f2ff00b1b545ddb638bdfc40319dfa34.tar.xz | |
Merge branch 'zh/format-ref-array-optim'
"git (branch|tag) --format=..." has been micro-optimized.
* zh/format-ref-array-optim:
ref-filter: reuse output buffer
ref-filter: get rid of show_ref_array_item
Diffstat (limited to 'ref-filter.c')
| -rw-r--r-- | ref-filter.c | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/ref-filter.c b/ref-filter.c index a0adb4551d..e2eac50d95 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -2435,27 +2435,22 @@ int format_ref_array_item(struct ref_array_item *info, return 0; } -void show_ref_array_item(struct ref_array_item *info, - const struct ref_format *format) -{ - struct strbuf final_buf = STRBUF_INIT; - struct strbuf error_buf = STRBUF_INIT; - - if (format_ref_array_item(info, format, &final_buf, &error_buf)) - die("%s", error_buf.buf); - fwrite(final_buf.buf, 1, final_buf.len, stdout); - strbuf_release(&error_buf); - strbuf_release(&final_buf); - putchar('\n'); -} - void pretty_print_ref(const char *name, const struct object_id *oid, const struct ref_format *format) { struct ref_array_item *ref_item; + struct strbuf output = STRBUF_INIT; + struct strbuf err = STRBUF_INIT; + ref_item = new_ref_array_item(name, oid); ref_item->kind = ref_kind_from_refname(name); - show_ref_array_item(ref_item, format); + if (format_ref_array_item(ref_item, format, &output, &err)) + die("%s", err.buf); + fwrite(output.buf, 1, output.len, stdout); + putchar('\n'); + + strbuf_release(&err); + strbuf_release(&output); free_array_item(ref_item); } |
