Search code examples
gitsvngit-svn

git svn - Unrecognized URL scheme error


I'm getting the following error on attempt to clone svn rep with git svn:

eugene$ git svn clone https://my.site/svn/ here
Initialized empty Git repository in /Users/eugene/Documents/workspace/test/here/.git/
Bad URL passed to RA layer: Unrecognized URL scheme for 'https://my.site/svn' at /usr/local/git/lib/perl5/site_perl/Git/SVN.pm line 148.

svn checkout https://my.site/svn/ works just fine.

I've re-run

cpan SVN::Core

and install finished fine, but still getting the error.


Solution

  • Apparently you have two different versions of Subversion binaries and one of those versions does not support http(s):// protocol.

    If you run svn --version the output should include something like this:

    * ra_neon : Module for accessing a repository via WebDAV protocol using Neon.
      - handles 'http' scheme
      - handles 'https' scheme
    

    or

    * ra_serf : Module for accessing a repository via WebDAV protocol using serf.
      - handles 'http' scheme
      - handles 'https' scheme
    

    The problem is that git-svn does not use the same binaries. Instead it uses another version of SVN that compiled with no support for http(s):// protocol. There may be different reasons for that:

    1. If svn --version -q prints 1.7.x, most probably your Git installation is too old to use this version of SVN. So, you might want to upgrade it as latest versions of git-svn support SVN 1.7.

    2. If your default SVN installation has no Perl binding installed, SVN::Core uses the binaries with no http(s) support as a fallback. So, you might want to enable Perl bindings for SVN.

    3. Finally, due to some misconfiguration of Perl modules, PATH/LD_LIBRARY_PATH or PERL5LIB (or whatever git-svn uses to find the libraries — I'm no expert here), git-svn just uses invalid binaries.

    The particular steps on fixing the issue depend on how you manage the packages, e.g. with Homebrew that'd look like this:

    $ brew remove svn
    $ brew install --with-perl svn
    

    or

    $ brew remove git
    $ brew install git
    

    Or with MacPorts something like this:

    $ port install subversion-perlbindings
    

    or

    $ port upgrade git-core +svn
    

    After that try to specify a proper library path. E.g. if which svn prints /usr/local/bin/svn, try to use /usr/local/lib as a library path for Perl modules.

    Hope that helps.