Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
docs:git:importing_an_svn_repository [2010/07/07 16:05] – billh | docs:git:importing_an_svn_repository [2010/09/20 10:09] (current) – billh | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== importing an svn repository ====== | ====== importing an svn repository ====== | ||
- | ===== Example 1: using git while keeping an svn repo intact ===== | + | ===== using git while keeping an svn repo intact ===== |
- create a text file somewhere (~/ | - create a text file somewhere (~/ | ||
jdoe = John Doe < | jdoe = John Doe < | ||
Line 28: | Line 28: | ||
- since it takes so long to pull full svn history into a git repo, you may want to do this once and then set up a git repo that others can clone, if other users want to use git on a large project | - since it takes so long to pull full svn history into a git repo, you may want to do this once and then set up a git repo that others can clone, if other users want to use git on a large project | ||
- | ===== Example 2: converting a project from svn to git ===== | + | ===== See Also ===== |
- | To get in the right frame of mind, don't think of exporting your entire svn repository, but rather export project by project. | + | |
- | + | ||
- | - create a text file somewhere (~/ | + | |
- | jdoe = John Doe < | + | |
- | </ | + | |
- | - create a temporary project directory, and change to it< | + | |
- | mkdir myproject_tmp | + | |
- | cd myproject_tmp | + | |
- | </ | + | |
- | - initialize | + | |
- | git svn init http:// | + | |
- | </ | + | |
- | * :!: for some reason I've recently had trouble starting this process with git svn init, so I've been doing git svn clone instead. | + | |
- | git svn clone file:/// | + | |
- | </ | + | |
- | - set up the user file for mapping< | + | |
- | git config svn.authorsfile ~/ | + | |
- | </ | + | |
- | - import the svn repository< | + | |
- | git svn fetch | + | |
- | </ | + | |
- | - change up one directory, and clone this newly created repository (this cleans up all svn stuff)< | + | |
- | cd .. | + | |
- | git clone myproject_tmp myproject | + | |
- | </ | + | |
- | - the myproject_tmp directory can now be removed, and the origin remote< | + | |
- | rm -Rf myproject_tmp | + | |
- | cd myproject | + | |
- | git remote rm origin | + | |
- | </ | + | |
- | - if you want to push this out to a shared repo, you can do it like this< | + | |
- | cd / | + | |
- | mkdir project.git | + | |
- | cd project.git | + | |
- | git init --bare --shared | + | |
- | cd / | + | |
- | git push / | + | |
- | (you can push other refs if you want at this point, if they should be public) | + | |
- | + | ||
- | (then I usually git clone from this shared repo for good measure to make sure it all works; your merge paths will work by default too) | + | |
- | </ | + | |
- | - you should also consider that although svn allows empty directories as part of the repo, git does not; we usually fix this by adding empty files named .emptydir in any directory that needs it | + | |
===== External Links ===== | ===== External Links ===== | ||
* http:// | * http:// |