Search code examples
gitsvngit-svn

git-svn, trunk-only checkout and remote branch that contains a hash mark in name


I'm using a trunk-only checkout of a Subversion repository with non-standard layout. I need to checkout a remote branch to work on an issue. The branch has the name #4711 at branches/issues/#4711. I am trying to use the solution described here:

[svn-remote "svn"]
    url = https://example.com/repos/projectname/trunk/sources
    fetch = :refs/remotes/git-svn
[svn-remote "svn-issue-4711"]
    url = https://example.com/repos/projectname/branches/issues/#4711
    fetch = :refs/remotes/git-svn-issues-#4711

Unfortunately I get an error message:

W: Filesystem has no item: '/repos/projectname/!svn/rvr/6221/branches/issues' path not found at /usr/share/perl5/Git/SVN.pm line 153.
W: Ignoring error from SVN, path probably does not exist: (160013): Filesystem has no item: '/repos/projectname/!svn/rvr/600/branches/issues' path not found
W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
This may take a while on large repositories

It seems the parser aborts at the hash mark, so I also tried to use some escaping, for example \#4711 or &234711 or &0434711, but these yield the error as well. What can I do to checkout this branch using git-svn? How to escape the branch name properly?


Solution

  • I found the answer myself:

    [svn-remote "svn-issue-4711"]
        url = "https://example.com/repos/projectname/branches/issues/#4711"
        fetch = :refs/remotes/git-svn-issues-4711
    

    I'm leaving the whole thing for documentation purposes if anyone else has this problem.