There were 3 issues:
1) We need read_cache() before using unpack_trees().
2) commit_tree() frees the parents, so we need to malloc them.
3) The current HEAD was missing from the parent list.
Signed-off-by: Miklos Vajna <redacted>
---
On Sat, Aug 23, 2008 at 01:50:52AM -0700, Junio C Hamano [off-list ref] wrote:
Please do not add new testfiles unnecessarily. You already have test
scripts that cover "git-merge". Add new ones to them. The same
comment
goes to the other patch.
Here it is.
builtin-merge.c | 11 +++++++----
t/t7600-merge.sh | 9 +++++++++
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/builtin-merge.c b/builtin-merge.c
index a201c66..dffe4b8 100644
--- a/builtin-merge.c
+++ b/builtin-merge.c
@@ -469,6 +469,7 @@ static int read_tree_trivial(unsigned char *common, unsigned char *head,
struct tree_desc t[MAX_UNPACK_TREES];
struct unpack_trees_options opts;
+ read_cache();
memset(&opts, 0, sizeof(opts));
opts.head_idx = 2;
opts.src_index = &the_index;
@@ -651,13 +652,15 @@ static void add_strategies(const char *string, unsigned attr)
static int merge_trivial(void)
{
unsigned char result_tree[20], result_commit[20];
- struct commit_list parent;
+ struct commit_list *parent = xmalloc(sizeof(struct commit_list *));
write_tree_trivial(result_tree);
printf("Wonderful.\n");
- parent.item = remoteheads->item;
- parent.next = NULL;
- commit_tree(merge_msg.buf, result_tree, &parent, result_commit);
+ parent->item = lookup_commit(head);
+ parent->next = xmalloc(sizeof(struct commit_list *));
+ parent->next->item = remoteheads->item;
+ parent->next->next = NULL;
+ commit_tree(merge_msg.buf, result_tree, parent, result_commit);
finish(result_commit, "In-index merge");
drop_save();
return 0;diff --git a/t/t7600-merge.sh b/t/t7600-merge.sh
index fee8fb7..dbc90bc 100755
--- a/t/t7600-merge.sh
+++ b/t/t7600-merge.sh
@@ -498,4 +498,13 @@ test_expect_success 'merge fast-forward in a dirty tree' '
test_debug 'gitk --all'
+test_expect_success 'in-index merge' '
+ git reset --hard c0 &&
+ git merge --no-ff -s resolve c1 > out &&
+ grep "Wonderful." out &&
+ verify_parents $c0 $c1
+'
+
+test_debug 'gitk --all'
+
test_done
--
1.6.0.rc3.17.gc14c8.dirty