# git clone broken in next

7 messages from 2008-05-15 to 2008-05-15. Participants: Kevin Ballard, Jeff King, Johannes Schindelin, Daniel Barkalow.
Thread: https://gitlist.dev/t/13525

## Kevin Ballard, 2008-05-15 03:54

Subject: git clone broken in next
Message-ID: <BB5BF79E-ECAE-4F63-AFF1-8C13F23D3D10@sb.org>
URL: https://gitlist.dev/e/BB5BF79E-ECAE-4F63-AFF1-8C13F23D3D10%40sb.org

```
Something's horribly wrong in next. I just installed the latest from  
next and then ran

   git clone git://github.com/kballard/github-gem.git

The resulting repo had absolutely nothing in the workdir. `git status`  
claims every single file is deleted but not updated. `git checkout -f  
HEAD` fixed the workdir.

This is 100% repeatable with different repositories.

$ git --version
git version 1.5.5.1.373.gce4aa

(this is the tip of next plus a single documentation patch).

Oddly, all of the tests with "clone" in their name seem to be passing  
just fine.

Ok, after running a git-bisect, I narrowed it down to  
8434c2f1afedb936e0ea8c07ce25733013c2f743 (Build in clone).

My system is Mac OS X 10.5.2.

-- 
Kevin Ballard
http://kevin.sb.org
kevin@sb.org
http://www.tildesoft.com

```

## Jeff King, 2008-05-15 04:44

Subject: Re: git clone broken in next
Message-ID: <20080515044402.GA3517@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20080515044402.GA3517%40sigill.intra.peff.net
In-Reply-To: <BB5BF79E-ECAE-4F63-AFF1-8C13F23D3D10@sb.org>

```
On Wed, May 14, 2008 at 11:54:39PM -0400, Kevin Ballard wrote:

> Something's horribly wrong in next. I just installed the latest from next 
> and then ran
>
>   git clone git://github.com/kballard/github-gem.git
>
> The resulting repo had absolutely nothing in the workdir. `git status`  
> claims every single file is deleted but not updated. `git checkout -f  
> HEAD` fixed the workdir.

Hmm, builtin-clone does seem to be completely broken. It looks like
unpack_trees is not doing its job for some reason, but I haven't looked
further. But it surprised me that we aren't testing anything as simple
as "clone works". The test below currently fails (though I am getting
other test failures which are presumably related).

---
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index dc9d63d..593d1a3 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -23,4 +23,11 @@ test_expect_success 'clone with excess parameters' '
 
 '
 
+test_expect_success 'clone checks out files' '
+
+	git clone src dst &&
+	test -f dst/file
+
+'
+
 test_done

```

## Jeff King, 2008-05-15 04:50

Subject: Re: git clone broken in next
Message-ID: <20080515045026.GA26161@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20080515045026.GA26161%40sigill.intra.peff.net
In-Reply-To: <20080515044402.GA3517@sigill.intra.peff.net>

```
On Thu, May 15, 2008 at 12:44:02AM -0400, Jeff King wrote:

> Hmm, builtin-clone does seem to be completely broken. It looks like
> unpack_trees is not doing its job for some reason, but I haven't looked
> further. But it surprised me that we aren't testing anything as simple
> as "clone works". The test below currently fails (though I am getting
> other test failures which are presumably related).
> 
> ---
> diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
> index dc9d63d..593d1a3 100755
> --- a/t/t5601-clone.sh
> +++ b/t/t5601-clone.sh
> @@ -23,4 +23,11 @@ test_expect_success 'clone with excess parameters' '
>  
>  '
>  
> +test_expect_success 'clone checks out files' '
> +
> +	git clone src dst &&
> +	test -f dst/file
> +
> +'
> +
>  test_done

Just to be sure, I bisected this test, and sure enough, the problem
commit is 8434c2f1 (build in clone). Daniel?

-Peff

```

## Johannes Schindelin, 2008-05-15 09:48

Subject: [PATCH] builtin-clone: fix initial checkout
Message-ID: <alpine.DEB.1.00.0805151042570.30431@racer>
URL: https://gitlist.dev/e/alpine.DEB.1.00.0805151042570.30431%40racer
In-Reply-To: <20080515045026.GA26161@sigill.intra.peff.net>

```

Somewhere in the process of finishing up builtin-clone, the update of
the working tree was lost.  This was due to not using the option "merge"
for unpack_trees().

Breakage noticed by Kevin Ballard.

Test by Jeff King.

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

	> On Thu, May 15, 2008 at 12:44:02AM -0400, Jeff King wrote:
	> 
	> > Hmm, builtin-clone does seem to be completely broken. It looks 
	> > like unpack_trees is not doing its job for some reason, but I
	> > haven't looked further. But it surprised me that we aren't 
	> > testing anything as simple as "clone works". The test below
	> > currently fails (though I am getting other test failures which 
	> > are presumably related).

	I did not notice the breakage earlier, because I ran with a 
	"twoway_merge" version of builtin-clone in my personal tree.

 builtin-clone.c  |    3 +++
 t/t5601-clone.sh |    7 +++++++
 2 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/builtin-clone.c b/builtin-clone.c
index a7c075d..8713128 100644
--- a/builtin-clone.c
+++ b/builtin-clone.c
@@ -525,7 +525,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
 
 		memset(&opts, 0, sizeof opts);
 		opts.update = 1;
+		opts.merge = 1;
+		opts.fn = oneway_merge;
 		opts.verbose_update = !option_quiet;
+		opts.src_index = &the_index;
 		opts.dst_index = &the_index;
 
 		tree = parse_tree_indirect(remote_head->old_sha1);
diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
index dc9d63d..593d1a3 100755
--- a/t/t5601-clone.sh
+++ b/t/t5601-clone.sh
@@ -23,4 +23,11 @@ test_expect_success 'clone with excess parameters' '
 
 '
 
+test_expect_success 'clone checks out files' '
+
+	git clone src dst &&
+	test -f dst/file
+
+'
+
 test_done
-- 
1.5.5.1.424.g3256b

```

## Jeff King, 2008-05-15 10:54

Subject: Re: [PATCH] builtin-clone: fix initial checkout
Message-ID: <20080515105403.GA10592@sigill.intra.peff.net>
URL: https://gitlist.dev/e/20080515105403.GA10592%40sigill.intra.peff.net
In-Reply-To: <alpine.DEB.1.00.0805151042570.30431@racer>

```
On Thu, May 15, 2008 at 10:48:25AM +0100, Johannes Schindelin wrote:

> Somewhere in the process of finishing up builtin-clone, the update of
> the working tree was lost.  This was due to not using the option "merge"
> for unpack_trees().

Looking at how "git-checkout" does it made me think that might be
related, but for some reason I didn't try the obvious.

Thanks.

Tested-by: Jeff King <peff@peff.net>

-Peff

```

## Daniel Barkalow, 2008-05-15 15:17

Subject: Re: [PATCH] builtin-clone: fix initial checkout
Message-ID: <alpine.LNX.1.00.0805151050240.19665@iabervon.org>
URL: https://gitlist.dev/e/alpine.LNX.1.00.0805151050240.19665%40iabervon.org
In-Reply-To: <alpine.DEB.1.00.0805151042570.30431@racer>

```
On Thu, 15 May 2008, Johannes Schindelin wrote:

> Somewhere in the process of finishing up builtin-clone, the update of
> the working tree was lost.  This was due to not using the option "merge"
> for unpack_trees().

I was sure I'd added support for update without merge, but now I can't see 
what became of it. I was pretty sure I'd actually needed it for something, 
too, but I guess that got resolved some other way. I'll have to check 
tonight on my laptop for something of the sort in my reflogs.

I'm pretty sure that just including merge and the necessary other options 
here will work fine (since there's no index to merge into) and I don't 
have a simple fix off the top of my head for that flag combination, so:

Acked-by: Daniel Barkalow <barkalow@iabervon.org>

> Breakage noticed by Kevin Ballard.
> 
> Test by Jeff King.
> 
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
> 
> 	> On Thu, May 15, 2008 at 12:44:02AM -0400, Jeff King wrote:
> 	> 
> 	> > Hmm, builtin-clone does seem to be completely broken. It looks 
> 	> > like unpack_trees is not doing its job for some reason, but I
> 	> > haven't looked further. But it surprised me that we aren't 
> 	> > testing anything as simple as "clone works". The test below
> 	> > currently fails (though I am getting other test failures which 
> 	> > are presumably related).
> 
> 	I did not notice the breakage earlier, because I ran with a 
> 	"twoway_merge" version of builtin-clone in my personal tree.
> 
>  builtin-clone.c  |    3 +++
>  t/t5601-clone.sh |    7 +++++++
>  2 files changed, 10 insertions(+), 0 deletions(-)
> 
> diff --git a/builtin-clone.c b/builtin-clone.c
> index a7c075d..8713128 100644
> --- a/builtin-clone.c
> +++ b/builtin-clone.c
> @@ -525,7 +525,10 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
>  
>  		memset(&opts, 0, sizeof opts);
>  		opts.update = 1;
> +		opts.merge = 1;
> +		opts.fn = oneway_merge;
>  		opts.verbose_update = !option_quiet;
> +		opts.src_index = &the_index;
>  		opts.dst_index = &the_index;
>  
>  		tree = parse_tree_indirect(remote_head->old_sha1);
> diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh
> index dc9d63d..593d1a3 100755
> --- a/t/t5601-clone.sh
> +++ b/t/t5601-clone.sh
> @@ -23,4 +23,11 @@ test_expect_success 'clone with excess parameters' '
>  
>  '
>  
> +test_expect_success 'clone checks out files' '
> +
> +	git clone src dst &&
> +	test -f dst/file
> +
> +'
> +
>  test_done
> -- 
> 1.5.5.1.424.g3256b
> 
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

```

## Kevin Ballard, 2008-05-15 19:53

Subject: Re: [PATCH] builtin-clone: fix initial checkout
Message-ID: <B29804AB-7A06-4988-9C5F-27A5499601B5@sb.org>
URL: https://gitlist.dev/e/B29804AB-7A06-4988-9C5F-27A5499601B5%40sb.org
In-Reply-To: <alpine.DEB.1.00.0805151042570.30431@racer>

```
On May 15, 2008, at 5:48 AM, Johannes Schindelin wrote:

> Somewhere in the process of finishing up builtin-clone, the update of
> the working tree was lost.  This was due to not using the option  
> "merge"
> for unpack_trees().
>
> Breakage noticed by Kevin Ballard.
>
> Test by Jeff King.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>

This patch fixes the issue for me. Thanks!

-Kevin Ballard

-- 
Kevin Ballard
http://kevin.sb.org
kevin@sb.org
http://www.tildesoft.com

```
