# [PATCH] merge-recur: if there is no common ancestor, fake empty one

3 messages from 2006-08-09 to 2006-08-09. Participants: Johannes Schindelin, Alex Riesen.
Thread: https://gitlist.dev/t/5185

## Johannes Schindelin, 2006-08-09 16:43

Subject: [PATCH] merge-recur: if there is no common ancestor, fake empty one
Message-ID: <Pine.LNX.4.63.0608091842210.1800@wbgn013.biozentrum.uni-wuerzburg.de>
URL: https://gitlist.dev/e/Pine.LNX.4.63.0608091842210.1800%40wbgn013.biozentrum.uni-wuerzburg.de

```

This fixes the coolest merge ever.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

---

	This was a forgotten part from the python version.

 merge-recursive.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/merge-recursive.c b/merge-recursive.c
index 7a93dd9..f5b547b 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1223,6 +1223,18 @@ int merge(struct commit *h1,
 		output_commit_title(iter->item);
 
 	merged_common_ancestors = pop_commit(&ca);
+	if (merged_common_ancestors == NULL) {
+		/* if there is no common ancestor, make an empty tree */
+		struct tree *tree = xcalloc(1, sizeof(struct tree));
+		char buffer[40];
+		int hdrlen;
+
+		tree->object.parsed = 1;
+		tree->object.type = OBJ_TREE;
+		*write_sha1_file_prepare(NULL, 0, tree_type, &tree->object.sha1,
+				buffer, &hdrlen);
+		merged_common_ancestors = make_virtual_commit(tree, "ancestor");
+	}
 
 	for (iter = ca; iter; iter = iter->next) {
 		output_indent = call_depth + 1;
-- 
1.4.2.rc3.g29d0-dirty

```

## Johannes Schindelin, 2006-08-09 17:44

Subject: Re: [PATCH] merge-recur: if there is no common ancestor, fake empty one
Message-ID: <Pine.LNX.4.63.0608091943570.1800@wbgn013.biozentrum.uni-wuerzburg.de>
URL: https://gitlist.dev/e/Pine.LNX.4.63.0608091943570.1800%40wbgn013.biozentrum.uni-wuerzburg.de
In-Reply-To: <Pine.LNX.4.63.0608091842210.1800@wbgn013.biozentrum.uni-wuerzburg.de>

```
Hi,

On Wed, 9 Aug 2006, Johannes Schindelin wrote:

> +		*write_sha1_file_prepare(NULL, 0, tree_type, &tree->object.sha1,

... make this "tree->object.sha1" _without_ a "&", of course.

Ciao,
Dscho

```

## Alex Riesen, 2006-08-09 19:55

Subject: Re: [PATCH] merge-recur: if there is no common ancestor, fake empty one
Message-ID: <20060809195511.GA13766@steel.home>
URL: https://gitlist.dev/e/20060809195511.GA13766%40steel.home
In-Reply-To: <Pine.LNX.4.63.0608091943570.1800@wbgn013.biozentrum.uni-wuerzburg.de>

```
Johannes Schindelin, Wed, Aug 09, 2006 19:44:38 +0200:
> 
> > +		*write_sha1_file_prepare(NULL, 0, tree_type, &tree->object.sha1,
> 
> ... make this "tree->object.sha1" _without_ a "&", of course.
> 

And without the asterisk before write_sha1_file_prepare

```
