Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

As of December 7th, 2010, the committers voted to move Fedora's source code repository to GitHubThis page exists to flesh out the details of the migration to GitHub, which is being tracked under FCREPO-835.

Contents:

Table of Contents

Scope

...

& Status

The following projects in the fedora-commons subversion repository on sourceforge.net will be moved:

Subversion Directory

GitHub Repository

Status

fedora

github.com/fcrepo/fcrepo
github.com/fcrepo/fcrepo-before33*

(tick) Moved

services/diringest

github.com/fcrepo/diringest

(tick) Moved

services/genericsearch

github.com/fcrepo/gsearch

(tick) Moved

services/oaiprovider

github.com/fcrepo/oaiprovider

(tick) Moved

services/sipcreator

github.com/fcrepo/sipcreator

(tick) Moved

utilities/

github.com/fcrepo/migration-2to3

(tick) 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 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 (steps 4 and 5 -6 apply to the fcrepo repository only).

...

No Format
git tag -d NA1-0 2.2.4-patch1 release-2.2.4-patch1

Rename Install git-retag, then rename and sign original release tags using git convention (preserves original tag datesmetadata):

No Format

git tagretag fedora-f1-0 v1.0
git retag fedora-1-0
git tag -f 1 v1.1
git retag fedora-1-1
git tag -f1 v1.1.1
git retag fedora-1-1-1
git tag -f 2 v1.2
git retag fedora-1-2
git tag -f1 v1.2.1
git retag fedora-1-2-1
git tag -f 0 v2.0
git retag fedora-2-0
git tag -f1 v2.1
git retag fedora-2-1
git tag -f1 v2.1.1
git retag fedora-2-1-1
git tag -f 1b v2.1b
git retag fedora-2-1b
git tag -f v2.2 fedora-2-2
2 v2.2
git tagretag release-f v22.2.1 release-2v2.2.1
git tagretag release-f v22.2.2 release-2v2.2.2
git tagretag release-f v22.2.3 release-2v2.2.3
git tagretag release-f v22.2.4 release-2v2.2.4
git tagretag release-f v33.0 release-3v3.0
git tagretag release-f v33.0b1 release-3v3.0b1
git tagretag release-f v33.0b2 release-3v3.0b2
git tagretag release-f v33.1 release-3v3.1
git tagretag release-f v33.2 release-3v3.2
git tagretag release-f v33.2.1 release-3v3.2.1
git tagretag release-f v33.3 release-3v3.3
git tagretag release-f v33.3.1 release-3v3.3.1
git tagretag release-f v33.4 release-3v3.4
git tagretag release-f v33.4-RC1 release-3v3.4-RC1
git tagretag release-f v33.4.1 release-3v3.4.1

Remove old, redundant tags:

No Format
git tag -d release-1.0
git tag -d `git tag|grep release`release-1.1
git tag -d release-1.1.1
git tag -d release-1.2
git tag -d release-1.2.1
git tag -d release-2.0
git tag -d release-2.1
git tag -d `gitrelease-2.1.1
git tag|grep fedora`
 -d release-2.1b
git tag -d release-2.2

Remove old, unused branches (all branches but those specifically excluded below will be removed):

No Format
git branch -D `git branch | grep -v master \
| grep -v maintenance-3.4 | grep -v maintenance-2.2`2 \
| grep -v fcrepo-604 | grep -v fcrepo-644 \
| grep -v fcrepo-748 | grep -v fcrepo-756 \
| grep -v fcrepo-775 | grep -v fcrepo-579 \
| grep -v fcrepo-586`

Free unused space in the repository:

No Format
git gc --prune=now
git prune

Avoid 'local uncommitted change' errors later

...

No Format
cp -a 3.refs-cleaned 4.recent-history
cd 4.recent-history

Remove tags and branches prior to 3.3

No Format
git tag -d `git tag|grep -v 3.[34]`
git branch -D maintenance-2.2 fcrepo-579 fcrepo-586

Find the id of the 3.3 tagged commit and parent:

No Format
git log --since=2009-12-18 --until=2009-12-19export lastid=`git show v3.3|grep ^commit|sed 's/...... \(.*\)$/\1/'`
export parentid=`git show $lastid^|grep ^commit|sed 's/...... \(.*\)$/\1/'`

Filter out everything prior:

No Format
export lastid=86b96dec0108af8bc160b84f24276962e0c4e2d5
export parentid=100891ba5fd0f1d3869236047867462355e9f1b1

git filter-branch --parent-filter "sed -e 's/-p $parentid//'" \
--tag-name-filter cat -- --all ^$parentid

git for-each-ref --format='%(refname)' refs/original \
| while read ref; do git update-ref -d "$ref"; done

Re-sign the tags:

No Format
git retag v3.3 v3.3
git retag v3.3.1 v3.3.1
git retag v3.4 v3.4
git retag v3.4-RC1 v3.4-RC1
git retag v3.4.1 v3.4.1

Reclaim unused space:

No Format
git reflog expire --expire=0 --all
git repack -ad
git prune

Find the new id of the 3.3 tagged commit (now the root commit of this repository):

No Format
export lastid=`git show v3.3|grep ^commit|sed 's/...... \(.*\)$/\1/'`

5. Separate Ancient History (fcrepo-before33)

...

No Format
git tag -d `git tag|grep 3.[34]`

git branch -D `git branch | grep -v master \
|grep -v maintenance-3.42.2 | grep -v fcrepo-579 \
|grep -v fcrepo-586`

git reset --hard (parent of lastid)$parentid
git gc --prune=now
git prune

6. Graft Test

Use a copy of the result of step 4:

No Format
cp -a 4.recent-history 6.graft-test
cd 6.graft-test

Copy and the pack and index files from fcrepo-before33:

No Format
cp ../5.ancient-history/.git/objects/pack/* \
.git/objects/pack

Create the graft:

No Format
echo $lastid $parentid > .git/info/grafts

Copy historic tags and branches with the following content (where $lastid and $parentid are the actual values set previously):

No Format
$lastid $parentidcat ../5.ancient-history/.git/packed-refs >> .git/packed-refs

Test it (all history, including old tags and branches, should be visible):

No Format
gitk --all

7. Push to GitHub

After creating a project at GitHub:

No Format
git remote add origin git@github.com:fcrepo/projname.git
git push origin master
git push --all
git push --tags