As of December 7th, 2010, the committers voted to move Fedora's source code repository to GitHub. This page exists to flesh out the details of the migration. ScopeThe following projects in the fedora-commons subversion repository on sourceforge.net will be moved:
* In order to make cloning and forking practical for the majority of contributors, the fcrepo repository will contain everything from the 3.3 release forward. The fcrepo-before33 repository will contain everything prior to 3.3. Instructions will be provided to locally graft the repositories for those who are interested in having the full view of history in a single repository. The projects in the incubator directory will be kept as-is. Migration StepsThe 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 ConversionBecause git stores a name and email address per commit, the conversion needs to know this information for each subversion userid. First, we need the list of all subversion userids: svnadmin dump /path/to/svnrepo | grep -a -A 2 svn:author | grep -v svn:author | grep -v ^V | grep -v ^- | sort -u > authors.txt Next, this file will need to be modified so that each line looks like: userid = Full Name <email-address@example.org> 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: 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 SubversionInstall the git-svn-abandon scripts, then run the following: 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 RefsRemove useless tags: 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): 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: git tag -d `git tag|grep release` git tag -d `git tag|grep fedora` Remove old, unused branches: git branch -D `git branch|grep -v master|grep -v maintenance-3.4|grep -v maintenance-2.2` Free unused space in the repository: git gc --prune=now git prune Avoid 'local uncommitted change' errors later git status 4. Separate Recent HistoryTBD 5. Separate Ancient HistoryTBD |