diff options
| author | Junio C Hamano <gitster@pobox.com> | 2026-03-02 17:06:53 -0800 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2026-03-02 17:06:53 -0800 |
| commit | 13763ecf7d92be72beff75c59163c5448d9e085e (patch) | |
| tree | 936c5d97e77cefb1f0da9b2aae1054b1433bc690 /object.c | |
| parent | 34113149cfde760b6b791939c6d8d87d27ca2767 (diff) | |
| parent | bb5da75d6116c35924a04a418ef4c3182663d0a2 (diff) | |
| download | git-13763ecf7d92be72beff75c59163c5448d9e085e.tar.xz | |
Merge branch 'ps/receive-pack-shallow-optim'
The code to accept shallow "git push" has been optimized.
* ps/receive-pack-shallow-optim:
commit: use commit graph in `lookup_commit_reference_gently()`
commit: make `repo_parse_commit_no_graph()` more robust
commit: avoid parsing non-commits in `lookup_commit_reference_gently()`
Diffstat (limited to 'object.c')
| -rw-r--r-- | object.c | 23 |
1 files changed, 18 insertions, 5 deletions
@@ -207,10 +207,11 @@ struct object *lookup_object_by_type(struct repository *r, } } -enum peel_status peel_object(struct repository *r, - const struct object_id *name, - struct object_id *oid, - unsigned flags) +enum peel_status peel_object_ext(struct repository *r, + const struct object_id *name, + struct object_id *oid, + unsigned flags, + enum object_type *typep) { struct object *o = lookup_unknown_object(r, name); @@ -220,8 +221,10 @@ enum peel_status peel_object(struct repository *r, return PEEL_INVALID; } - if (o->type != OBJ_TAG) + if (o->type != OBJ_TAG) { + *typep = o->type; return PEEL_NON_TAG; + } while (o && o->type == OBJ_TAG) { o = parse_object(r, &o->oid); @@ -241,9 +244,19 @@ enum peel_status peel_object(struct repository *r, return PEEL_INVALID; oidcpy(oid, &o->oid); + *typep = o->type; return PEEL_PEELED; } +enum peel_status peel_object(struct repository *r, + const struct object_id *name, + struct object_id *oid, + unsigned flags) +{ + enum object_type dummy; + return peel_object_ext(r, name, oid, flags, &dummy); +} + 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; |
