Skip to content

Commit e2e5ac2

Browse files
pcloudsgitster
authored andcommitted
merge: use commit-slab in merge remote desc instead of commit->util
It's done so that commit->util can be removed. See more explanation in the commit that removes commit->util. Signed-off-by: Junio C Hamano <[email protected]>
1 parent 7b680d3 commit e2e5ac2

File tree

4 files changed

+29
-18
lines changed

4 files changed

+29
-18
lines changed

builtin/merge.c

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -443,6 +443,7 @@ static void merge_name(const char *remote, struct strbuf *msg)
443443
struct object_id branch_head;
444444
struct strbuf buf = STRBUF_INIT;
445445
struct strbuf bname = STRBUF_INIT;
446+
struct merge_remote_desc *desc;
446447
const char *ptr;
447448
char *found_ref;
448449
int len, early;
@@ -515,16 +516,13 @@ static void merge_name(const char *remote, struct strbuf *msg)
515516
strbuf_release(&truname);
516517
}
517518

518-
if (remote_head->util) {
519-
struct merge_remote_desc *desc;
520-
desc = merge_remote_util(remote_head);
521-
if (desc && desc->obj && desc->obj->type == OBJ_TAG) {
522-
strbuf_addf(msg, "%s\t\t%s '%s'\n",
523-
oid_to_hex(&desc->obj->oid),
524-
type_name(desc->obj->type),
525-
remote);
526-
goto cleanup;
527-
}
519+
desc = merge_remote_util(remote_head);
520+
if (desc && desc->obj && desc->obj->type == OBJ_TAG) {
521+
strbuf_addf(msg, "%s\t\t%s '%s'\n",
522+
oid_to_hex(&desc->obj->oid),
523+
type_name(desc->obj->type),
524+
remote);
525+
goto cleanup;
528526
}
529527

530528
strbuf_addf(msg, "%s\t\tcommit '%s'\n",
@@ -932,8 +930,11 @@ static void write_merge_heads(struct commit_list *remoteheads)
932930
for (j = remoteheads; j; j = j->next) {
933931
struct object_id *oid;
934932
struct commit *c = j->item;
935-
if (c->util && merge_remote_util(c)->obj) {
936-
oid = &merge_remote_util(c)->obj->oid;
933+
struct merge_remote_desc *desc;
934+
935+
desc = merge_remote_util(c);
936+
if (desc && desc->obj) {
937+
oid = &desc->obj->oid;
937938
} else {
938939
oid = &c->object.oid;
939940
}

commit.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1574,13 +1574,21 @@ int commit_tree_extended(const char *msg, size_t msg_len,
15741574
return result;
15751575
}
15761576

1577+
define_commit_slab(merge_desc_slab, struct merge_remote_desc *);
1578+
static struct merge_desc_slab merge_desc_slab = COMMIT_SLAB_INIT(1, merge_desc_slab);
1579+
1580+
struct merge_remote_desc *merge_remote_util(struct commit *commit)
1581+
{
1582+
return *merge_desc_slab_at(&merge_desc_slab, commit);
1583+
}
1584+
15771585
void set_merge_remote_desc(struct commit *commit,
15781586
const char *name, struct object *obj)
15791587
{
15801588
struct merge_remote_desc *desc;
15811589
FLEX_ALLOC_STR(desc, name, name);
15821590
desc->obj = obj;
1583-
commit->util = desc;
1591+
*merge_desc_slab_at(&merge_desc_slab, commit) = desc;
15841592
}
15851593

15861594
struct commit *get_merge_parent(const char *name)
@@ -1592,7 +1600,7 @@ struct commit *get_merge_parent(const char *name)
15921600
return NULL;
15931601
obj = parse_object(&oid);
15941602
commit = (struct commit *)peel_to_type(name, 0, obj, OBJ_COMMIT);
1595-
if (commit && !commit->util)
1603+
if (commit && !merge_remote_util(commit))
15961604
set_merge_remote_desc(commit, name, obj);
15971605
return commit;
15981606
}

commit.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ struct merge_remote_desc {
303303
struct object *obj; /* the named object, could be a tag */
304304
char name[FLEX_ARRAY];
305305
};
306-
#define merge_remote_util(commit) ((struct merge_remote_desc *)((commit)->util))
306+
extern struct merge_remote_desc *merge_remote_util(struct commit *);
307307
extern void set_merge_remote_desc(struct commit *commit,
308308
const char *name, struct object *obj);
309309

merge-recursive.c

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,12 @@ static void output(struct merge_options *o, int v, const char *fmt, ...)
223223

224224
static void output_commit_title(struct merge_options *o, struct commit *commit)
225225
{
226+
struct merge_remote_desc *desc;
227+
226228
strbuf_addchars(&o->obuf, ' ', o->call_depth * 2);
227-
if (commit->util)
228-
strbuf_addf(&o->obuf, "virtual %s\n",
229-
merge_remote_util(commit)->name);
229+
desc = merge_remote_util(commit);
230+
if (desc)
231+
strbuf_addf(&o->obuf, "virtual %s\n", desc->name);
230232
else {
231233
strbuf_add_unique_abbrev(&o->obuf, &commit->object.oid,
232234
DEFAULT_ABBREV);

0 commit comments

Comments
 (0)