git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [bug][bisected] git-svn with root branches

From
EWEric Wong <normalperson@yhbt.net>
Date
Oct 22, 2009, 06:30 UTC
Message-ID
<20091022063036.GA8081@dcvr.yhbt.net>
In-Reply-To
<20091021144113.GA7440@cumin>
Daniel Cordero <theappleman@gmail.com> wrote:
Show 28 quoted lines
> Hello,
> 
> when trying to clone a svn repo with the command-line:
> 
> 	$ git svn clone -b / http://svn.collab.net/repos/svn/
> 
> (that is, each folder in the root of the repo should be considered it's
> own branch)
> the clone sometimes[1] fails saying:
> 
> 	ref: 'refs/remotes/' ends with a trailing slash, this is not permitted by git nor Subversion
> 
> The offending config is:
> [svn-remote "svn"]
>         url = http://svn.collab.net/repos/svn
>         branches = /*:refs/remotes/*
> 
> 
> This used to work in the past; I bisected the bad commit to
> 
> commit 6f5748e14cc5bb0a836b649fb8e2d6a5eb166f1d
> Author: Adam Brewster <adambrewster@gmail.com>
> Date:   Tue Aug 11 23:14:03 2009 -0400
> 
>     svn: allow branches outside of refs/remotes
> 
> 
> Thanks in advance.
Thanks for bisecting it for us!

Reverting the left hand side of these two regexps from Adam's commit seems to fix the problem.

diff --git a/git-svn.perl b/git-svn.perl
index eb4b75a..56af221 100755
--- a/git-svn.perl
+++ b/git-svn.perl
@@ -1765,7 +1765,7 @@ sub read_all_remotes {
 	my $use_svm_props = eval { command_oneline(qw/config --bool
 	    svn.useSvmProps/) };
 	$use_svm_props = $use_svm_props eq 'true' if $use_svm_props;
-	my $svn_refspec = qr{\s*/?(.*?)\s*:\s*(.+?)\s*};
+	my $svn_refspec = qr{\s*(.*?)\s*:\s*(.+?)\s*};
 	foreach (grep { s/^svn-remote\.// } command(qw/config -l/)) {
 		if (m!^(.+)\.fetch=$svn_refspec$!) {
 			my ($remote, $local_ref, $remote_ref) = ($1, $2, $3);
@@ -1979,7 +1979,7 @@ sub find_ref {
 	my ($ref_id) = @_;
 	foreach (command(qw/config -l/)) {
 		next unless m!^svn-remote\.(.+)\.fetch=
-		              \s*/?(.*?)\s*:\s*(.+?)\s*$!x;
+		              \s*(.*?)\s*:\s*(.+?)\s*$!x;
 		my ($repo_id, $path, $ref) = ($1, $2, $3);
 		if ($ref eq $ref_id) {
 			$path = '' if ($path =~ m#^\./?#);
---

I'm not sure why Adam decided the leading slash needed to be removed for
the git refspec.  That said, the globbing/branching code still makes me
want to hide under a rock and I'm generally afraid to touch it.
I'll wait for Adam to chime in since he's braver than I am :)
-- 
Eric Wong
Previous: Daniel CorderoNext: Eric Wong
Message 2 of 7 in “[bug][bisected] git-svn with root branches”
  1. Daniel CorderoOct 21, 2009
  2. Eric WongOct 22, 2009
  3. git svn: fix fetch where glob is on the top-level URLEric Wong, Oct 23, 2009
  4. Eric WongOct 23, 2009
  5. Eric WongOct 23, 2009
  6. Eric WongOct 22, 2009
  7. Eric WongOct 23, 2009

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.