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 /commit.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 'commit.c')
-rw-r--r-- | commit.c | 19 |
1 files changed, 19 insertions, 0 deletions
@@ -894,3 +894,22 @@ int commit_tree(const char *msg, unsigned char *tree, strbuf_release(&buffer); return result; } + +struct commit *get_merge_parent(const char *name) +{ + struct object *obj; + struct commit *commit; + unsigned char sha1[20]; + if (get_sha1(name, sha1)) + return NULL; + obj = parse_object(sha1); + commit = (struct commit *)peel_to_type(name, 0, obj, OBJ_COMMIT); + if (commit && !commit->util) { + struct merge_remote_desc *desc; + desc = xmalloc(sizeof(*desc)); + desc->obj = obj; + desc->name = strdup(name); + commit->util = desc; + } + return commit; +} |