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

git svn clones flawlessly on Windows, crashes silently on OS X - status of externals support?

From
JBJon Blackburn <gitcommunitysupport@jonathanblackburn.net>
Date
Feb 29, 2016, 16:54 UTC
Message-ID
<loom.20160229T173718-868@post.gmane.org>
Hello,

tl;dr: Can I get Git/SVN working on my MacBook if there are external references in the repository? If not, are there alternatives that I can leverage?

I'm trying to use git svn to clone a repository that contains externals. On my Windows7 machine it works perfectly. On my Mac (running OSX 10.11.3) it fails silently after creating the empty local repository.

The posts that speak to some of the issues surrounding this are over two years old, so I'm hoping things have changed.

I've tried with the versions of Git and SVN installed with XCode, and with newer versions installed with HomeBrew and MacPorts. The latest version of Git (2.7.2) is the one I've done my troubleshooting with.

I found the threads that speak of needing to link the SVN Perl modules into directories being searched by the Perl runtime, and have done something comparable with these:

sudo ln -s /opt/local/lib/perl5/vendor_perl/5.22/darwin-thread-multi- 2level/SVN /opt/local/lib/perl5/site_perl/5.22/darwin-thread-multi-2level/SVN

sudo ln -s /opt/local/lib/perl5/vendor_perl/5.22/darwin-thread-multi- 2level/auto /opt/local/lib/perl5/site_perl/5.22/auto

If I try with Git's debugger turned on, like so:
GIT_TRACE=1 git svn clone -s https://my-remote-repo

I get a bunch of redundant messages that look similar to the below, with something suspicious happening right at the time Git encounters its first external reference:

... many, many of these Checked through r45000 16:49:19.677091 git.c:348 trace: built-in: git 'config' 'svn-remote.svn. branches-maxRev' '45000' 16:49:19.684111 git.c:348 trace: built-in: git 'config' 'svn-remote.svn.tags- maxRev' '45000' Checked through r45100 16:49:19.721522 git.c:348 trace: built-in: git 'config' 'svn-remote.svn. branches-maxRev' '45100' 16:49:19.728460 git.c:348 trace: built-in: git 'config' 'svn-remote.svn.tags- maxRev' '45100' 16:49:19.784923 git.c:348 trace: built-in: git 'config' 'svn-remote.svn. reposRoot' 'https://a-remote-external' ... once this line appears, the "Checked through r*" messages disappear. ... The rest of the output looks like these. Then the process dies. 16:49:19.807647 git.c:348 trace: built-in: git 'config' 'svn-remote.svn. branches-maxRev' '45172' 16:49:19.814647 git.c:348 trace: built-in: git 'config' 'svn-remote.svn. tags-maxRev' '45172'

If I run with the Perl debugger like so:

PERLDB_OPTS="NonStop frame=5" /opt/local/bin/perl5.22 -d $(git --exec-path)/git-svn clone -s https://my-remote-repository

I get the following stacktrace mush right before it crashes. It looks like multiple processes are sending output to TTY so the stacktraces are interleaved. There is a reference to Error::throw() down at the bottom that I hope will be helpful.

  in  .=main::post_fetch_checkout() from /opt/local/libexec/git-core/
            git-svn:387
   in  $=main::verify_ref('HEAD^0') from /opt/local/libexec/git-core/
           git-svn:1716
    in  $=Git::command_oneline(ref(ARRAY), ref(HASH)) from /opt/
           local/libexec/git-core/git-svn:1806
     in  @=Git::command_output_pipe(ref(ARRAY), ref(HASH)) from  
           /opt/local/lib/perl5/site_perl/5.22/Git.pm:314
      in  @=Git::_command_common_pipe('-|', ref(ARRAY), ref(HASH)) from 
           /opt/local/lib/perl5/site_perl/5.22/Git.pm:344
       in  @=Git::_maybe_self(ref(ARRAY), ref(HASH)) from 
           /opt/local/lib/perl5/site_perl/5.22/Git.pm:1561
        in  $=UNIVERSAL::isa(ref(ARRAY), 'Git') from 
           /opt/local/lib/perl5/site_perl/5.22/Git.pm:1549
       in  .=Git::_check_valid_cmd('rev-parse') from 
           /opt/local/lib/perl5/site_perl/5.22/Git.pm:1569 from 
           /opt/local/lib/perl5/site_perl/5.22/Git.pm:1598 
        in  .=Git::_setup_git_cmd_env(undef) from 
           /opt/local/lib/perl5/site_perl/5.22/Git.pm:1608
        in  .=Git::_execv_git_cmd('rev-parse', '--verify', 'HEAD^0') from 
          /opt/local/lib/perl5/site_perl/5.22/Git.pm:1609
     in  @=Error::subs::with(ref(CODE)) from 
          /opt/local/lib/perl5/site_perl/5.22/Git.pm:325
     in  $=Error::catch('Git::Error::Command', ref(CODE)) from 
          /opt/local/lib/perl5/site_perl/5.22/Git.pm:325
     in  .=Error::subs::try(ref(CODE), ref(HASH)) from 
         /opt/local/lib/perl5/site_perl/5.22/Git.pm:325
      in  .=CODE(0x7fa8a367bd40)() from 
         /opt/local/lib/perl5/vendor_perl/5.22/Error.pm:421
       in  .=Git::_cmd_close('rev-parse --verify HEAD^0', ref(GLOB)) from 
          /opt/local/lib/perl5/site_perl/5.22/Git.pm:319
        in  .=Error::throw('Git::Error::Command', 'rev-parse --verify HEAD^0'
          , 128) from /opt/local/lib/perl5/site_perl/5.22/Git.pm:1640
         in  $=Git::Error::Command::new('Git::Error::Command', 'rev-parse 
           --verify HEAD^0', 128) from /opt/local/lib/perl5/vendor_perl/5.22/
                Error.pm:184
          in  $=Error::new('Git::Error::Command', '-text', 'command returned 
            error', '-cmdline', 'rev-parse --verify HEAD^0', '-value', 128, 
            '-outputref', undef) from 
             /opt/local/lib/perl5/site_perl/5.22/Git.pm:1466
      in  $ CODE(0x7fa8a31d3db8)(ref(Git::Error::Command), undef, '') from 
            /opt/local/lib/perl5/vendor_perl/5.22/Error.pm:426
      in  $=Error::subs::run_clauses(ref(HASH), ref(Git::Error::Command), undef, 
            ref(ARRAY)) from /opt/local/lib/perl5/vendor_perl/5.22/Error.pm:432
       in  $=Scalar::Util::blessed(ref(Git::Error::Command)) from 
          /opt/local/lib/perl5/vendor_perl/5.22/Error.pm:324
       in  $=UNIVERSAL::isa(ref(Git::Error::Command), 'Git::Error::Command') 
          from /opt/local/lib/perl5/vendor_perl/5.22/Error.pm:324
       in  .=CODE(0x7fa8a23a74b8)(ref(Git::Error::Command), ref(SCALAR)) 
          from /opt/local/lib/perl5/vendor_perl/5.22/Error.pm:345
        in  .=Error::throw(ref(Git::Error::Command)) from 
           /opt/local/lib/perl5/site_perl/5.22/Git.pm:324
       in  $=CODE(0x7fa8a31d3db8)(ref(Git::Error::Command), undef, '') from 
          /opt/local/lib/perl5/vendor_perl/5.22/Error.pm:354
      in  $=Scalar::Util::blessed(ref(Git::Error::Command)) from 
         /opt/local/lib/perl5/vendor_perl/5.22/Error.pm:440
      in  $=UNIVERSAL::can(ref(Git::Error::Command), 'throw') from 
         /opt/local/lib/perl5/vendor_perl/5.22/Error.pm:440
      in  .=Error::throw(ref(Git::Error::Command)) from 
         /opt/local/lib/perl5/vendor_perl/5.22/Error.pm:442
Message 1 of 1 in “git svn clones flawlessly on Windows, crashes silently on OS X - status of externals support?”
  1. Jon BlackburnFeb 29, 2016

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.