...
The following steps were followed for the dry run migration of the fcrepo repository. Similar steps will be followed for the final migration of each repository.
1. Run the Initial Conversion
...
Because git stores a name and email address per commit, the conversion needs to know this information for each subversion userid.
...
Now the initial converstion can be run with git-svn. It takes a very long time to run (about half a day), so should be run with screen or nohup, like this:
Code Block |
---|
nohup git svn clone file:///path/to/svnrepo --prefix=svn/ --authors-file=authors.txt --trunk=fedora/trunk --tags=fedora/tags --branches=fedora/branches 1.initial-conversion& |
2. Abandon Subversion
Install the git-svn-abandon scripts, then run the following:
Code Block |
---|
cp -a 1.initial-conversion 2.abandoned-svn
cd 2.abandoned-svn
git svn-abandon-fix-refs
git svn-abandon-cleanup
git config --remove-section svn
git config --remove-section svn-remote.svn
rm -rf .git/svn .git/logs/refs/remotes/svn .git/refs/remotes/svn |
3. Clean up Refs
Remove useless tags:
Code Block |
---|
git tag -d NA1-0 2.2.4-patch1 release-2.2.4-patch1 |
Rename original release tags using git convention (preserves original tag dates):
Code Block |
---|
git tag -f v1.0 fedora-1-0
git tag -f v1.1 fedora-1-1
git tag -f v1.1.1 fedora-1-1-1
git tag -f v1.2 fedora-1-2
git tag -f v1.2.1 fedora-1-2-1
git tag -f v2.0 fedora-2-0
git tag -f v2.1 fedora-2-1
git tag -f v2.1.1 fedora-2-1-1
git tag -f v2.1b fedora-2-1b
git tag -f v2.2 fedora-2-2
git tag -f v2.2.1 release-2.2.1
git tag -f v2.2.2 release-2.2.2
git tag -f v2.2.3 release-2.2.3
git tag -f v2.2.4 release-2.2.4
git tag -f v3.0 release-3.0
git tag -f v3.0b1 release-3.0b1
git tag -f v3.0b2 release-3.0b2
git tag -f v3.1 release-3.1
git tag -f v3.2 release-3.2
git tag -f v3.2.1 release-3.2.1
git tag -f v3.3 release-3.3
git tag -f v3.3.1 release-3.3.1
git tag -f v3.4 release-3.4
git tag -f v3.4-RC1 release-3.4-RC1
git tag -f v3.4.1 release-3.4.1
|
Remove old, redundant tags:
Code Block |
---|
git tag -d `git tag|grep release`
git tag -d `git tag|grep fedora`
|
Remove old, unused branches:
Code Block |
---|
git branch -D `git branch|grep -v master|grep -v maintenance-3.4|grep -v maintenance-2.2`
|
Free unused space in the repository:
Code Block |
---|
git gc --prune=now
git prune
|
Avoid 'local uncommitted change' errors later
Code Block |
---|
git status
|
4. Separate Recent History
TBD
5. Separate Ancient History
TBD