How do I migrate a flat svn repo to git repo

后端 未结 3 1841
情歌与酒
情歌与酒 2021-01-05 19:49

I have a flat svn repository which looks like:

my_repo/
├── file1.c
├── file2.c
├── file3.c
└── README

This repo has no branches, or tags a

相关标签:
3条回答
  • 2021-01-05 20:06

    The problem is with svn2git's --rootistrunk argument. Instead of that, try this:

    svn2git svn+ssh://user@svn.example.com/projects/my_repo --trunk / --notags --nobranches --authors users.txt --verbose
    
    0 讨论(0)
  • 2021-01-05 20:18

    Hit same issue with an old 'flat' SVN repo, following worked with git v2.20.1: (following recipe on http://www.sailmaker.co.uk/blog/2013/05/05/migrating-from-svn-to-git-preserving-branches-and-tags-3/ )

    git svn init <SVN https URL> --stdlayout --prefix=svn/ -T /
    git svn fetch --all
    
    0 讨论(0)
  • 2021-01-05 20:25

    I had the same problem. Not standard svn repository: no trunk, no tag, no brunch. I checked all possible options of svn2git but didn't have success. As svn2git is just ruby wrapper for git svn, I tried directly git svn and it was ok. Here is what I have done.

    Init empty git dir and give svn repository path and the relative paths of trunk, tags and brunches. In my case it is / as I don't have any of those.

    1. git svn init http://svnmydomain.com/urlpart/projectname --trunk=/ --tags=/ --branches=/
    

    If svn repo is password protected you will have to supply username and password arguments to the command above but in most cases it won't work as it's a little bit buggy. Instead svn checkout in the current folder. git svn will use svn cash and won't ask you for password.

    Check that git config is ok. Type

    2. git config --list
    

    You should see this:

    svn-remote.svn.url=http://svnmydomain.com/urlpart    
    svn-remote.svn.fetch=urlpart/projectname:refs/remotes/origin/trunk
    svn-remote.svn.branches=urlpart/projectname/*:refs/remotes/origin/*
    svn-remote.svn.tags=urlpart/projectname/*:refs/remotes/origin/tags/*
    

    If git config is not correct, fix it manually by executing

    git config <key> <value>
    

    Now when git config is ok you should fetch data from svn and push it to git server

    3. git svn fetch
    4. git remote add origin git@gitdomain:url/gitproject.git
    5. git add .
    6. git commit -m "merge from svn"
    7. git push origin master
    

    If some people continue to work in svn, you will need to synch svn with git constantly. To do it type:

    8. git svn rebase
    9. git push origin master 
    
    0 讨论(0)
提交回复
热议问题