diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-11-07 13:26:22 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-11-08 10:36:53 -0800 |
commit | ae8e4c9ce10ea9439a88b79a40aeff4696d40416 (patch) | |
tree | ba5ca6899912fda76ce6a9c21794242a356919e3 /merge-recursive.c | |
parent | 895680f044ebe9df600e6c9e042d40d9d953bc9b (diff) | |
download | git-ae8e4c9ce10ea9439a88b79a40aeff4696d40416.tar.gz |
merge: make usage of commit->util more extensible
The merge-recursive code uses the commit->util field directly to annotate
the commit objects given from the command line, i.e. the remote heads to
be merged, with a single string to be used to describe it in its trace
messages and conflict markers.
Correct this short-signtedness by redefining the field to be a pointer to
a structure "struct merge_remote_desc" that later enhancements can add
more information. Store the original objects we were told to merge in a
field "obj" in this struct, so that we can recover the tag we were told to
merge.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-recursive.c')
-rw-r--r-- | merge-recursive.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/merge-recursive.c b/merge-recursive.c index cc664c39b6..5a2db296b8 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -38,16 +38,15 @@ static struct tree *shift_tree_object(struct tree *one, struct tree *two, return lookup_tree(shifted); } -/* - * A virtual commit has (const char *)commit->util set to the name. - */ - static struct commit *make_virtual_commit(struct tree *tree, const char *comment) { struct commit *commit = xcalloc(1, sizeof(struct commit)); + struct merge_remote_desc *desc = xmalloc(sizeof(*desc)); + + desc->name = comment; + desc->obj = (struct object *)commit; commit->tree = tree; - commit->util = (void*)comment; - /* avoid warnings */ + commit->util = desc; commit->object.parsed = 1; return commit; } @@ -184,7 +183,7 @@ static void output_commit_title(struct merge_options *o, struct commit *commit) for (i = o->call_depth; i--;) fputs(" ", stdout); if (commit->util) - printf("virtual %s\n", (char *)commit->util); + printf("virtual %s\n", merge_remote_util(commit)->name); else { printf("%s ", find_unique_abbrev(commit->object.sha1, DEFAULT_ABBREV)); if (parse_commit(commit) != 0) |