From: Junio C Hamano Date: Wed, 30 May 2018 05:04:08 +0000 (+0900) Subject: Merge branch 'nd/pack-struct-commit' X-Git-Tag: v2.18.0-rc0~22 X-Git-Url: https://git.lorimer.id.au/gitweb.git/diff_plain/a4eae17c2c3f898d2838000c5f1b7c7d66c62316?hp=-c Merge branch 'nd/pack-struct-commit' Memory optimization. * nd/pack-struct-commit: commit.h: rearrange 'index' to shrink struct commit --- a4eae17c2c3f898d2838000c5f1b7c7d66c62316 diff --combined commit.h index 10e34e1a18,fd1cbe7263..c3af512f8b --- a/commit.h +++ b/commit.h @@@ -19,17 -19,11 +19,17 @@@ struct commit_list struct commit { struct object object; void *util; - unsigned int index; timestamp_t date; struct commit_list *parents; - struct tree *tree; + + /* + * If the commit is loaded from the commit-graph file, then this + * member may be NULL. Only access it through get_commit_tree() + * or get_commit_tree_oid(). + */ + struct tree *maybe_tree; uint32_t graph_pos; + unsigned int index; }; extern int save_commit_buffer; @@@ -108,9 -102,6 +108,9 @@@ void unuse_commit_buffer(const struct c */ void free_commit_buffer(struct commit *); +struct tree *get_commit_tree(const struct commit *); +struct object_id *get_commit_tree_oid(const struct commit *); + /* * Disassociate any cached object buffer from the commit, but do not free it. * The buffer (or NULL, if none) is returned. @@@ -303,10 -294,10 +303,10 @@@ extern const char *find_commit_header(c /* Find the end of the log message, the right place for a new trailer. */ extern int ignore_non_trailer(const char *buf, size_t len); -typedef void (*each_mergetag_fn)(struct commit *commit, struct commit_extra_header *extra, +typedef int (*each_mergetag_fn)(struct commit *commit, struct commit_extra_header *extra, void *cb_data); -extern void for_each_mergetag(each_mergetag_fn fn, struct commit *commit, void *data); +extern int for_each_mergetag(each_mergetag_fn fn, struct commit *commit, void *data); struct merge_remote_desc { struct object *obj; /* the named object, could be a tag */