openSUSE:YaST SVN to GIT
Migration of the YaST SVN to GIT
Conventions
- Reserved prefixes for branch names and tags are:
"openSUSE-" and "SLE-" and "Code-"
They should only be used for branches which contain the released version(s) for the respective distribution.
Branch names will have this format:
openSUSE-$VER e.g. "openSUSE-12_2"
SLE-${SLE_VER} e.g. "SLE-12"
SLE-${SLE_VER}-SP${SP_VER} e.g. "SLE-12-SP1"
Code-${SLE_VER} e.g. "Code-11"/"Code-11-SP1" (if SLE and openSUSE share the same code base)
Tags will have this format:
openSUSE-${DIST_VER}/${PACKAGE_VER}
openSUSE/${PACKAGE_VER} (formerly called stable-$VER)
SLE-${SLE_VER}/${PACKAGE_VER}
SLE-${SLE_VER}-SP${SP_VER}/${PACKAGE_VER}
You are free to use any other branch and tag names as you like. But in order to support the kind of automation we are used to please stick to the naming scheme for the maintenance branches.
- Branching As every module now lives in its own repo there is no longer the need for a global branch-everything From now on the module maintainer decides when to branch off a maintenance branch. Ideally the same code base is used as long as possible. Releases are tagged. Branches are created when they is needed, not when a product releases.
History of the conversion
We (Bernhard Wiedemann and Daniel Schmidt) worked on migrating the YaST SVN repo to several GIT repos. As YaST's usage of SVN is kind of unusual this did not work with the existing tools (like git-svn). We found a way of doing it with a patched version of svndumpfilter3 Once the migration worked well and our patch is cleaned up, we will publish our tool as well.
Our Goals
In long discussions in 2011 the initiators agreed to meet these goals with the migration:
- have one git repo per YaST module
- have all history in the repos including all branches and tags
- have a kind of yast-meta repo containing scripts that are able to checkout single or all yast repos in the same style like the current svn checkout or to search within the other repos
Thomas Göttlicher (tgoettlicher@suse.de) is collecting usecases
(like 'find latest version tag of package X in distribution Y')
- cleanup and unify the branch and tag names
Reserved prefixes for branch names and tags are:
"openSUSE-" and "SLE-" and "Code-"
They should only be used for branches which contain the released version(s) for the respective distribution.
Branch names will have this format:
openSUSE-$VER e.g. "openSUSE-12_2"
SLE-${SLE_VER} e.g. "SLE-12"
SLE-${SLE_VER}-SP${SP_VER} e.g. "SLE-12-SP1"
Tags will have this format:
openSUSE-${DIST_VER}/${PACKAGE_VER}
openSUSE/${PACKAGE_VER} (formerly called stable-$VER)
SLE-${SLE_VER}/${PACKAGE_VER}
SLE-${SLE_VER}-SP${SP_VER}/${PACKAGE_VER}
You are free to use any other branch and tag names as you like. But in order to support the kind of automation we are used to please stick to the naming scheme for the maintenance branches.
- move all repos to github.com/yast/*
Final Migration
The final migration was done on 2012/05/17-18. From now on please use the official YaST repositories github.
More
Subscribe to yast-deve@opensuse.org to stay tuned.