git-svn aborts with "Use of uninitialized value $u" when a non-svn-backed branch is present in remote
- From
- Jacob Godserv <jacobgodserv@gmail.com>
- Date
- Sep 22, 2015, 18:48 UTC
- Message-ID
- <CALi1mtc8zmOzk-qv4XAg6N=ENasnMAENdJSLHK7EcpxRUk1nTw@mail.gmail.com>
I found a specific case in which git-svn improperly aborts:
1. I created a git-svn repository, named "git-svn repo", by cloned an svn repository via the git-svn tool. 2. I created a normal git repository, named "configuration repo". I renamed the master branch to "configuration". The initial commit adds a README and some utility scripts. 3. I created a bare repository, named "master repo". 4. I pushed from the git-svn repo to the master repo. 5. I pushed from the configuration repo to the master repo.
The idea is the configuration branch, which is detached from any git-svn history, can contain some useful tools, defaults, etc., that I can share with teammates who want to use git on this svn project. It's an odd use of git, but it has been working well.
However, a vanilla distribution of Git for Windows 2.5.2 produces the following error when running any git-svn command, such as "git svn info", on the cloned master repo:
Use of uninitialized value $u in substitution (s///) at /mingw64/share/perl5/site_perl/Git/SVN.pm line 105. Use of uninitialized value $u in concatenation (.) or string at /mingw64/share/perl5/site_perl/Git/SVN.pm line 105. refs/remotes/origin/configuration: 'svn+ssh://10.0.1.1/repos/projectA' not found in ''
In the mentioned SVN.pm file, after the line:
my $u = (::cmt_metadata("$refname"))[0];I added the following four lines:
if (not defined $u) {
warn "W: $refname does not exist in
SVN; skipping";
next;
}git-svn appears to operate correctly with this patch. This is my first time ever editing a perl script, so I apologize if I murdered an adorable animal just now.
I'm sending this in so more knowledgeable git-svn developers can comment on this and fix this in the official distribution of git, assuming there is a bug here to fix.
--
Jacob