Merge branch 'nd/commit-util-to-slab'
The in-core "commit" object had an all-purpose "void *util" field, which was tricky to use especially in library-ish part of the code. All of the existing uses of the field has been migrated to a more dedicated "commit-slab" mechanism and the field is eliminated. * nd/commit-util-to-slab: commit.h: delete 'util' field in struct commit merge: use commit-slab in merge remote desc instead of commit->util log: use commit-slab in prepare_bases() instead of commit->util show-branch: note about its object flags usage show-branch: use commit-slab for commit-name instead of commit->util name-rev: use commit-slab for rev-name instead of commit->util bisect.c: use commit-slab for commit weight instead of commit->util revision.c: use commit-slab for show_source sequencer.c: use commit-slab to associate todo items to commits sequencer.c: use commit-slab to mark seen commits shallow.c: use commit-slab for commit depth instead of commit->util describe: use commit-slab for commit names instead of commit->util blame: use commit-slab for blame suspects instead of commit->util commit-slab: support shared commit-slab commit-slab.h: code split
This commit is contained in:
12
commit.c
12
commit.c
@ -1605,13 +1605,21 @@ out:
|
||||
return result;
|
||||
}
|
||||
|
||||
define_commit_slab(merge_desc_slab, struct merge_remote_desc *);
|
||||
static struct merge_desc_slab merge_desc_slab = COMMIT_SLAB_INIT(1, merge_desc_slab);
|
||||
|
||||
struct merge_remote_desc *merge_remote_util(struct commit *commit)
|
||||
{
|
||||
return *merge_desc_slab_at(&merge_desc_slab, commit);
|
||||
}
|
||||
|
||||
void set_merge_remote_desc(struct commit *commit,
|
||||
const char *name, struct object *obj)
|
||||
{
|
||||
struct merge_remote_desc *desc;
|
||||
FLEX_ALLOC_STR(desc, name, name);
|
||||
desc->obj = obj;
|
||||
commit->util = desc;
|
||||
*merge_desc_slab_at(&merge_desc_slab, commit) = desc;
|
||||
}
|
||||
|
||||
struct commit *get_merge_parent(const char *name)
|
||||
@ -1623,7 +1631,7 @@ struct commit *get_merge_parent(const char *name)
|
||||
return NULL;
|
||||
obj = parse_object(&oid);
|
||||
commit = (struct commit *)peel_to_type(name, 0, obj, OBJ_COMMIT);
|
||||
if (commit && !commit->util)
|
||||
if (commit && !merge_remote_util(commit))
|
||||
set_merge_remote_desc(commit, name, obj);
|
||||
return commit;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user