Skip to content

Commit 1867ce6

Browse files
telezhnayagitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 8858448 commit 1867ce6

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

ref-filter.c

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -231,12 +231,18 @@ static int objecttype_atom_parser(const struct ref_format *format, struct used_a
231231
static int objectsize_atom_parser(const struct ref_format *format, struct used_atom *atom,
232232
const char *arg, struct strbuf *err)
233233
{
234-
if (arg)
235-
return strbuf_addf_ret(err, -1, _("%%(objectsize) does not take arguments"));
236-
if (*atom->name == '*')
237-
oi_deref.info.sizep = &oi_deref.size;
238-
else
239-
oi.info.sizep = &oi.size;
234+
if (!arg) {
235+
if (*atom->name == '*')
236+
oi_deref.info.sizep = &oi_deref.size;
237+
else
238+
oi.info.sizep = &oi.size;
239+
} else if (!strcmp(arg, "disk")) {
240+
if (*atom->name == '*')
241+
oi_deref.info.disk_sizep = &oi_deref.disk_size;
242+
else
243+
oi.info.disk_sizep = &oi.disk_size;
244+
} else
245+
return strbuf_addf_ret(err, -1, _("unrecognized %%(objectsize) argument: %s"), arg);
240246
return 0;
241247
}
242248

@@ -876,7 +882,10 @@ static void grab_common_values(struct atom_value *val, int deref, struct expand_
876882
name++;
877883
if (!strcmp(name, "objecttype"))
878884
v->s = xstrdup(type_name(oi->type));
879-
else if (!strcmp(name, "objectsize")) {
885+
else if (!strcmp(name, "objectsize:disk")) {
886+
v->value = oi->disk_size;
887+
v->s = xstrfmt("%"PRIuMAX, (intmax_t)oi->disk_size);
888+
} else if (!strcmp(name, "objectsize")) {
880889
v->value = oi->size;
881890
v->s = xstrfmt("%lu", oi->size);
882891
}

0 commit comments

Comments
 (0)