Subject: Re: [PATCH] clone: check if server supports shallow clones

From: Jeff King <[email-masked]>
Date: Wed, 17 Jun 2015 12:59:10 -0400

On Wed, Jun 17, 2015 at 09:35:23AM -0700, Junio C Hamano wrote:

> > Of course it's hard to add to the test suite, since we do not have a way
> > of hitting a server that does not understand shallow (I simply fudged
> > server_supports() to return false on the client).
> 
> We've had the "shallow" capability advertised since ed09aef0
> (support fetching into a shallow repository, 2006-10-30), and this
> patch itself may not be that super-important in practice.  Let's not
> worry too much about a test for situations that may not likely
> matter to us [*1*].

I had actually started looking at doing a generic interop testing
suite. It would be nice to be able to do something like:

  cd t/interop
  ./run v1.0.0 v2.0.0 ./t0001-clone.sh

and then the test script looks something like:

  test_expect_success 'clone with A from B' '
	git.a clone -u "git.b upload-pack"
  '

The "run" script is similar to the version in t/perf that builds
arbitrary revisions for testing, but with the twist that it points
the PATH to "git.a" and "git.b", which symlink into the bin-wrappers/ of
the built directories (and probably disallows bare "git" to prevent
mistakes).

But I agree that this particular bug is not all that exciting to test.

> *1* How behind are re-implementations of upload-pack by other
> people, I have to wonder, though?

JGit advertises "shallow". Libgit2 does not, but it also does not
implement upload-pack. :)

I do wonder which server Mike was hitting to come across this in the
first place. Maybe the Google Code dulwich-based one?

-Peff