diff options
author | Olga Telezhnaya <olyatelezhnaya@gmail.com> | 2018-12-24 13:24:30 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-12-28 10:07:34 -0800 |
commit | 1867ce6cbec9c8f23f958cb675de129fcd6471a4 (patch) | |
tree | d69f60e3d11c804212aff0ae7cbc5aa3525af84e /ref-filter.c | |
parent | 8858448bb49332d353febc078ce4a3abcc962efe (diff) | |
download | git-1867ce6cbec9c8f23f958cb675de129fcd6471a4.tar.gz |
ref-filter: add objectsize:disk option
Add new formatting option objectsize:disk to know
exact size that object takes up on disk.
Signed-off-by: Olga Telezhnaia <olyatelezhnaya@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'ref-filter.c')
-rw-r--r-- | ref-filter.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/ref-filter.c b/ref-filter.c index 0c45ed9d94..252daf2812 100644 --- a/ref-filter.c +++ b/ref-filter.c @@ -231,12 +231,18 @@ static int objecttype_atom_parser(const struct ref_format *format, struct used_a static int objectsize_atom_parser(const struct ref_format *format, struct used_atom *atom, const char *arg, struct strbuf *err) { - if (arg) - return strbuf_addf_ret(err, -1, _("%%(objectsize) does not take arguments")); - if (*atom->name == '*') - oi_deref.info.sizep = &oi_deref.size; - else - oi.info.sizep = &oi.size; + if (!arg) { + if (*atom->name == '*') + oi_deref.info.sizep = &oi_deref.size; + else + oi.info.sizep = &oi.size; + } else if (!strcmp(arg, "disk")) { + if (*atom->name == '*') + oi_deref.info.disk_sizep = &oi_deref.disk_size; + else + oi.info.disk_sizep = &oi.disk_size; + } else + return strbuf_addf_ret(err, -1, _("unrecognized %%(objectsize) argument: %s"), arg); return 0; } @@ -876,7 +882,10 @@ static void grab_common_values(struct atom_value *val, int deref, struct expand_ name++; if (!strcmp(name, "objecttype")) v->s = xstrdup(type_name(oi->type)); - else if (!strcmp(name, "objectsize")) { + else if (!strcmp(name, "objectsize:disk")) { + v->value = oi->disk_size; + v->s = xstrfmt("%"PRIuMAX, (intmax_t)oi->disk_size); + } else if (!strcmp(name, "objectsize")) { v->value = oi->size; v->s = xstrfmt("%lu", oi->size); } |