Debian Edu SVN-2-Git Migration Status

Package tracker

SVN folder name

package?

Salsa?

comment

debian-edu

x

x

debian-edu

debian-edu-artwork

x

x

debian-edu

debian-edu-config

x

x

debian-edu

debian-edu-doc

x

x

debian-edu

debian-edu-install

x

x

debian-edu

desktop-profiles

x

x

debian-edu/upstream

killer

x

x

debian-edu-pkg-team

libpam-mklocaluser

x

x

debian-edu/upstream

shutdown-at-night

x

x

debian-edu-pkg-team

sitesummary

x

x

debian-edu/upstream

slbackup

x

x

debian-edu-pkg-team

slbackup-php

x

x

debian-edu-pkg-team

slbackup-php.squeeze-proposed-update

x

no

dropped

Packages we care about but which are not uploaded to Debian

SVN folder name

package?

Salsa?

comment

dak

x

x

debian-edu/historic

debian-edu-archive-keyring

x

x

debian-edu/historic

debian-edu-itil-doc-nb

x

x

debian-edu/historic

educlient

x

x

debian-edu/upstream

eduroaming

x

x

debian-edu/upstream

kde-icon-cache

x

x

debian-edu/upstream

Directories we care about but which are not packages

SVN folder name

Salsa

comment

debian-edu-logo

x

debian-edu

d-e-gitscripts

x

debian-edu/historic

Alioth svn repo backup available here: alioth-archive.debian.org/svn/debian-edu.tar.xz

Directories we dont care about

SVN folder name

desa-config

d-i-bootimages

edu-ltsp-client-builder

etcinsvk

fai-configspace

host-policygroups

localization-config

moodle-debian-edu-theme

tarballs

update-nsswitch

upgradetest

webmin-ldap-user-simple

xdebconfigurator


/!\ Everything below is outdated, but kept here out of historic interest.

Our repository structure

The idea is to have the debian-edu-* folders in the project's base folder (/git/debian-edu)

The upstream folder in (/git/debian-edu/upstream) is for software we maintain as upstream and software that may be interesting to other people, as well.

The pkg-team folder in (/git/debian-edu/pkg-team) is for packages maintained by the Debian Edu packaging team.

Migration HowTo

This is a sketch on an exemplary migration of a package that was maintained in SVN and shall now be maintained in Git.

Create new Git package on Alioth

Create a fresh Git project for <package> on git.debian.org:

  $ ssh git.debian.org
  $ cd /git/debian-edu/<folder-to-use>
  $ ../setup-project <package> "<package> Debian package"

Note: all debian-edu* packages go into the Debian Edu project's base folder (/git/debian-edu). Edu-related packages go into the pkg-team subfolder. Upstream projects go into the upstream subfolder.

Clone package from SVN

Clone a Git repository from the SVN version of <package>:

git svn clone \
    svn+ssh://svn.debian.org/svn/debian-edu/trunk/src/<package>/ \
    --authors-file=<edu-authors>

If the <edu-authors> file is incomplete (i.e. there is a login name in an SVN commit that has no match in the <edu-authors> file) the command will abort. Update your <edu-authors> file, remove the locally created folder <package> and execute the above command again.

FIXME: Branches and tags should better be handled as describe in the main page or in the Game team one. Cross-check with the svn2git migration script posted by Andreas Tille to debian-edu ML.

Connect local SVN clone and remote Git repository

Enter the new local Git project:

  $ cd <package>

Specify the new remote origin Git repository:

  $ git remote add origin ssh://git.debian.org/git/debian-edu/<folder-to-use>/<package>.git

Setup git-buildpackage to ease packing with git

With Git versions greater than 1.7.2.3:

  $ git checkout --orphan upstream
  $ git rm -rf .
  $ git commit --allow-empty -m 'Initial upstream branch.'
  $ git checkout -f master

With Git versions lower than 1.7.2.3:

  $ git symbolic-ref HEAD refs/heads/upstream
  $ git rm --cached -r .
  $ git commit --allow-empty -m 'Initial upstream branch.'
  $ git checkout -f master

Import upstream tarball:

  $ git-import-orig --pristine-tar /path/to/tarball.orig.tar.gz

source: http://honk.sigxcpu.org/projects/git-buildpackage/manual-html/gbp.import.html#GBP.IMPORT.CONVERT

Push the local SVN/Git clone to remote Git repository

Push the local version to remote:

  $ git push origin master:master

Release tags

FIXME: This can be improved!!!

If the SVN project did not contain any tags, you have to manually add Git tags according to SVN log entries (log entries that mention the works "release", "releasing", "upload to ..." or similar). For the taggable log entries you have to determine the corresponding Git hash.

  $ git tag -s debian/<package-version> -m "Debian release <package-version>" <git-hash>
  $ ... some more ...
  $ git push origin --tags

Mark SVN package/project as migrated

From the now deprecated SVN project folder you should remove all files and place a README.migrated2git into that folder that points to the new Vcs-Browser location.

The package <package> has been migrated to Git on Alioth:
http://anonscm.debian.org/gitweb/?p=debian-edu/<folder-to-use>/<package>.git

Fix up Vcs-*: fields in debian/control

Last but not least: make sure that the Vcs-*: fields in debian/control of the migrated package get updated with the next package upload.


CategoryGit