diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2007-08-09 22:21:29 -0700 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2007-08-10 02:30:44 -0700 | 
| commit | 933bf40a5c6328b6c022b636f45a6f2c48c3838e (patch) | |
| tree | 246435d354ef5842d922aad8be571f2a1b1f973c /merge-recursive.c | |
| parent | 7efeb8f09866ddd09485c0e6f371a6cbba3d2a0a (diff) | |
| download | git-933bf40a5c6328b6c022b636f45a6f2c48c3838e.tar.gz | |
Start moving unpack-trees to "struct tree_desc"
This doesn't actually change any real code, but it changes the interface
to unpack_trees() to take an array of "struct tree_desc" entries, the same
way the tree-walk.c functions do.
The reason for this is that we would be much better off if we can do the
tree-unpacking using the generic "traverse_trees()" functionality instead
of having to the special "unpack" infrastructure.
This really is a pretty minimal diff, just to change the calling
convention. It passes all the tests, and looks sane. There were only two
users of "unpack_trees()": builtin-read-tree and merge-recursive, and I
tried to keep the changes minimal.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'merge-recursive.c')
| -rw-r--r-- | merge-recursive.c | 16 | 
1 files changed, 11 insertions, 5 deletions
diff --git a/merge-recursive.c b/merge-recursive.c index c8539ec0ba..f7d1b84999 100644 --- a/merge-recursive.c +++ b/merge-recursive.c @@ -216,13 +216,19 @@ static int add_cacheinfo(unsigned int mode, const unsigned char *sha1,   */  static int index_only = 0; +static void init_tree_desc_from_tree(struct tree_desc *desc, struct tree *tree) +{ +	parse_tree(tree); +	init_tree_desc(desc, tree->buffer, tree->size); +} +  static int git_merge_trees(int index_only,  			   struct tree *common,  			   struct tree *head,  			   struct tree *merge)  {  	int rc; -	struct object_list *trees = NULL; +	struct tree_desc t[3];  	struct unpack_trees_options opts;  	memset(&opts, 0, sizeof(opts)); @@ -234,11 +240,11 @@ static int git_merge_trees(int index_only,  	opts.head_idx = 2;  	opts.fn = threeway_merge; -	object_list_append(&common->object, &trees); -	object_list_append(&head->object, &trees); -	object_list_append(&merge->object, &trees); +	init_tree_desc_from_tree(t+0, common); +	init_tree_desc_from_tree(t+1, head); +	init_tree_desc_from_tree(t+2, merge); -	rc = unpack_trees(trees, &opts); +	rc = unpack_trees(3, t, &opts);  	cache_tree_free(&active_cache_tree);  	return rc;  }  | 
