git svn: fix shallow clone when upstream revision is too new
authorEric Wong <normalperson@yhbt.net>
Mon, 20 Jul 2009 09:06:24 +0000 (02:06 -0700)
committerEric Wong <normalperson@yhbt.net>
Thu, 23 Jul 2009 06:45:29 +0000 (23:45 -0700)
commit4aacaeb3dc82bb6479e70e120053dc27a399460e
treec6c4f11b5117d58587d612866b8bf87b625d126c
parent0ad8ff2cd185e84fd49dd961370411e379681f10
git svn: fix shallow clone when upstream revision is too new

Thanks to Ka-Hing Cheung for the initial bug report and patch:
> git-svn uses $ra->get_latest_revnum to find out the latest
> revision, but that can be problematic, because get_latest_revnum
> returns the latest revnum in the entire repository, not
> restricted by whatever URL you used to construct $ra. So if you
> do git svn clone -r HEAD svn://blah/blah/trunk, it won't work if
> the latest checkin is in one of the branches (it will try to
> fetch a rev that doesn't exist in trunk, making the clone
> useless).

Relying on SVN::Core::INVALID_REVNUM (-1) as the "start"
argument to SVN::Ra::get_log() proved unreliable with http(s)
URLs so the result of SVN::Ra::get_latest_revnum() is used as
the "start" argument instead.

Signed-off-by: Eric Wong <normalperson@yhbt.net>
git-svn.perl
t/t9142-git-svn-shallow-clone.sh [new file with mode: 0755]