I've been following the [steps from Atlassian](https://www.atlassian.com/git/migration#!migration-convert) for converting my SVN repositories to Git and then pushing them to BitBucket. Overall the process has been realtively painless. I've already moved loads of SVN to BitBucket, but up to this point the migration has dealt with realtively small and little used projects.
Now I'm trying to convert a more heavily used project, with lots of tags and some active svn branches. None of these repositories use a --stdlayout, so I am defining my layout manuallly. I've tried a few different things, and no matter what I do, `git branch` only every shows me the master branch. None of the other branches are being created.
Most recently, I tried this:
git svn clone --trunk="/MyProject/trunk/MyProjectMobileApp" --branches="/MyProject/branches/ProblemChild --branches="/MyProject/branches/ios7Work" --tags="/MyProject/tags/MobileApp" --tags="/MyProject/tags/released/MobileApp" --authors-file=authors.txt https://email@example.com/svn/iOS MyProject
When that finished (almost 24 hours later), I ran
java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git
The output indicated that it was going to delete branches from git that did not exist in Subversion:
# Checking for obsolete branches... svn: warning: W160013: URL 'https://firstname.lastname@example.org/svn/iOS/MyProject/branches/ios7Work' non-existent in revision 4448 svn: E200009: Could not list all targets because some targets don't exist Deleting Git branch 'ios7work' not in Subversion. Deleted branch ios7work (was f4ee5b6). Deleting Git branch 'origin/master' not in Subversion. Deleted branch origin/master (was 241bd27). Deleting Git branch 'problemchild' not in Subversion. Deleted branch problemchild (was 0a781d8).
Frustrating. The Problem child branch has been reintegrated back into trunk (in SVN), but it has not been deleted. So it does technically exist in SVN HEAD, but it is effectively dead. We have left it in place because we wanted to review a couple of things in it. The bigger problem in the ios7Work branch. It is alive. It has not been reintegrated, and also exists in SVN HEAD. The thing that is throwing me off is the warning on line 2 of the output above. My HEAD right now is r4447.
I found some documentation that indicated that something may be amiss with my config. So I ran the following:
git config --add svn-remote.ios7work.url https://email@example.com/svn/iOS/MyProject/branches/ios7Work git config --add svn-remote.ios7work.fetch :refs/remotes/ios7work git svn fetch ios7work
It complained, so I google around a bit, and edited the .git/config to make the ios7work stuff look like this:
[svn-remote "ios7work"] url = https://firstname.lastname@example.org/svn/iOS path = /MyProject/branches/ios7Work fetch = :refs/remotes/ios7work
This time the `git svn fetch ios7work` apeared to fetch a bunch of stuff, but when I ran the `clean-git` command from above I got the same output. I have run `clean-git --force`. No matter what I try, the branches are being dropped in git.
Any advice will be greatly appreciated. I've been struggling with this for the better part of 4 days now.
What I ended up doing is migrating folder by folder (each folder was going to be it's own repo anyhow). I left this folder for last, and tweaked it to make the layout more standard. I ended up getting it to work.
I kind of blindly accepted the "Atlassian way" in that article, and in hindsight, I wish I had done a bit more research about it.
Anyhow, all's well that ends well.
I'm sorry to hear that.
Honestly, given how little work the clean-git command actually does I would just skip that step. It's basically an implementation of some of the scripts in the following blog post:
Depending on which parts of the cleanup you need feel free to run them manually. The only one you really need is to convert the SVN remote branches into normal Git branches (see "Create the final branches").
Let me know how you go.
This community is celebrating its one-year anniversary and Atlassian co-founder Mike Cannon-Brookes has all the feels.Read more
Bitbucket Pipelines helps me manage and automate a number of serverless deployments to AWS Lambda and this is how I do it. I'm building Node.js Lambda functions using node-lambda ...
Connect with like-minded Atlassian users at free events near you!Find a group
Connect with like-minded Atlassian users at free events near you!
Unfortunately there are no AUG chapters near you at the moment.Start an AUG
You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs