Hi (not subscribed),
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).
This change seems to work, sorry it's not a proper diff:
@sub fetch_all {
- my $head = $ra->get_latest_revnum;
+ my $head = undef;
+ $ra->get_log("", -1, 0, 1, 0, 1, sub { $head = $_[1] });
-khc
From: Eric Wong <hidden> Date: 2016-06-15 22:47:04
Ka-Hing Cheung [off-list ref] wrote:
Hi (not subscribed),
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).
This change seems to work, sorry it's not a proper diff:
@sub fetch_all {
- my $head = $ra->get_latest_revnum;
+ my $head = undef;
+ $ra->get_log("", -1, 0, 1, 0, 1, sub { $head = $_[1] });
Thanks Ka-Hing,
There's an unrelated issue with $ra->get_log being broken with http(s)
URLs that need escaping, so t9118 is failing on me when SVN_HTTPD_PORT
is set (I just found another fix that broke that test, too). I'll push
out this fix when I can get t9118 fixed with HTTP.
--
Eric Wong
From: Eric Wong <hidden> Date: 2016-06-15 22:47:05
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 <redacted>
---
Junio: Pushed out to git://git.bogomips.org/git-svn several
days ago, I thought I had sent this email days ago but
I had to leave in a hurry and never sent it.
git-svn.perl | 1 +
t/t9142-git-svn-shallow-clone.sh | 30 ++++++++++++++++++++++++++++++
2 files changed, 31 insertions(+), 0 deletions(-)
create mode 100755 t/t9142-git-svn-shallow-clone.sh
@@ -1647,6 +1647,7 @@ sub fetch_all {my$ra=Git::SVN::Ra->new($url);my$uuid=$ra->get_uuid;my$head=$ra->get_latest_revnum;+$ra->get_log("",$head,0,1,0,1,sub{$head=$_[1]});my$base=defined$fetch?$head:0;# read the max revs for wildcard expansion (branches/*, tags/*)
@@ -0,0 +1,30 @@+#!/bin/sh+#+# Copyright (c) 2009 Eric Wong+#++test_description='git svn shallow clone'+../lib-git-svn.sh++test_expect_success'setup test repository''+svn_cmdmkdir-m"create standard layout"\+"$svnrepo"/trunk"$svnrepo"/branches"$svnrepo"/tags&&+svn_cmdcp-m"branch off trunk"\+"$svnrepo"/trunk"$svnrepo"/branches/a&&+svn_cmdco"$svnrepo"/branches/a&&+(+cda&&+>foo&&+svn_cmdaddfoo&&+svn_cmdcommit-m"add foo"+)+'++start_httpd++test_expect_success'clone trunk with "-r HEAD"''+gitsvnclone-rHEAD"$svnrepo/trunk"g&&+(cdg&&gitrev-parse--symbolic--verifyHEAD)+'++test_done
From: Eric Wong <hidden> Date: 2016-06-15 22:47:05
Eric Wong [off-list ref] wrote:
Junio: Pushed out to git://git.bogomips.org/git-svn several
days ago, I thought I had sent this email days ago but
I had to leave in a hurry and never sent it.
Wait, that patch may be botched and that's why I didn't send
before leaving the other day... Oops.
--
Eric Wong
From: Eric Wong <hidden> Date: 2016-06-15 22:47:05
Eric Wong [off-list ref] wrote:
Eric Wong [off-list ref] wrote:
quoted
Junio: Pushed out to git://git.bogomips.org/git-svn several
days ago, I thought I had sent this email days ago but
I had to leave in a hurry and never sent it.
Wait, that patch may be botched and that's why I didn't send
before leaving the other day... Oops.
Oops, false alarm, sorry about that. All should be well with
4aacaeb3dc82bb6479e70e120053dc27a399460e
--
Eric Wong