I am trying to import my repository from svn to git using svn2git, but it seems like it's failing when it hits a branch. What's the problem?
Found possible branch point: https://s.aaa.com/repo/trunk/project => https://s.aaa.com/repo/branches/project-beta1.0, 128
Use of uninitialized value in substitution (s///) at /opt/local/libexec/git-core/git-svn line 1728.
Use of uninitialized value in concatenation (.) or string at /opt/local/libexec/git-core/git-svn line 1728.
refs/remotes/trunk: 'https://s.aaa.com/repo' not found in ''
Running command: git branch -l --no-color
* master
Running command: git branch -r --no-color
trunk
Running command: git checkout trunk
Note: checking out 'trunk'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at f4e6268... Changing svn repository in cap files
Running command: git branch -D master
Deleted branch master (was f4e6268).
Running command: git checkout -f -b master
Switched to a new branch 'master'
Running command: git gc
Counting objects: 450, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (368/368), done.
Writing objects: 100% (450/450), done.
Total 450 (delta 63), reused 450 (delta 63)
I had to open up the .git/config file and delete all the branches and tags entries under the svn-remote section and run the 'git svn clone' command for this error to go away. Apparently, if I run this command multiple times (usually stop and re-start from a revision), the branch/tag entries get added to the config file instead of being reused, which causes the error.
I was following some svn to git instructions when I ran into the same error message. The error occurred when I ran this command:
git svn clone file:///pathto/repo /pathto/new-git-repo –-no-metadata -A authors.txt -t tags -b branches -T trunk
After the error occurred, I edited the .git/config-file as follows:
tags = tags/*:refs/remotes/svn/tags/*
branches = branches/*:refs/remotes/svn/*
->
tags = tags/*:refs/remotes/svn/tags/*
branches = branches/*:refs/remotes/svn/branches/*
I.e., I just formatted the "braches" line to be similar to the "tags" line. Then I ran the command again. The process produced a valid git repo with remote branches.
To fix your problems you have to convert the imported remote branches and tags to local ones.
Section from Scott Chacone (PRO GIT): Original link: http://progit.org/book/ch8-2.html:
To move the tags to be proper Git tags, run
$ cp -Rf .git/refs/remotes/tags/* .git/refs/tags/
$ rm -Rf .git/refs/remotes/tags
This takes the references that were remote branches that started with tag/ and makes them real (lightweight) tags.
Next, move the rest of the references under refs/remotes to be local branches:
$ cp -Rf .git/refs/remotes/* .git/refs/heads/
$ rm -Rf .git/refs/remotes
This worked for me perfectly.
Your subversion repository does not have a standard trunk/branches/tags structure. Specify the alternate places for where you branched by using the --branch, --tag, --trunk options.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With