diff options
author | Junio C Hamano <gitster@pobox.com> | 2021-07-28 20:17:58 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-07-28 20:17:58 (GMT) |
commit | c9d6d8a1938f86594b33785a8228d9f35ad457c8 (patch) | |
tree | 2b658bf0a8be2b3c2a736e6e4032acdb778da1aa /object.c | |
parent | 01369fdfd3d0deec41c55306dae42f00dfbfa582 (diff) | |
parent | d1ed8d6cee57c91ec770a8a183ed40c3ec867ac1 (diff) | |
download | git-c9d6d8a1938f86594b33785a8228d9f35ad457c8.zip git-c9d6d8a1938f86594b33785a8228d9f35ad457c8.tar.gz git-c9d6d8a1938f86594b33785a8228d9f35ad457c8.tar.bz2 |
Merge branch 'jk/log-decorate-optim'
Optimize "git log" for cases where we wasted cycles to load ref
decoration data that may not be needed.
* jk/log-decorate-optim:
load_ref_decorations(): fix decoration with tags
add_ref_decoration(): rename s/type/deco_type/
load_ref_decorations(): avoid parsing non-tag objects
object.h: add lookup_object_by_type() function
object.h: expand docstring for lookup_unknown_object()
log: avoid loading decorations for userformats that don't need it
pretty.h: update and expand docstring for userformat_find_requirements()
Diffstat (limited to 'object.c')
-rw-r--r-- | object.c | 18 |
1 files changed, 18 insertions, 0 deletions
@@ -185,6 +185,24 @@ struct object *lookup_unknown_object(struct repository *r, const struct object_i return obj; } +struct object *lookup_object_by_type(struct repository *r, + const struct object_id *oid, + enum object_type type) +{ + switch (type) { + case OBJ_COMMIT: + return (struct object *)lookup_commit(r, oid); + case OBJ_TREE: + return (struct object *)lookup_tree(r, oid); + case OBJ_TAG: + return (struct object *)lookup_tag(r, oid); + case OBJ_BLOB: + return (struct object *)lookup_blob(r, oid); + default: + die("BUG: unknown object type %d", type); + } +} + struct object *parse_object_buffer(struct repository *r, const struct object_id *oid, enum object_type type, unsigned long size, void *buffer, int *eaten_p) { struct object *obj; |