Switching KDE packaging to git

Modestas Vainius modestas at vainius.eu
Sat Jul 24 23:56:59 UTC 2010


Hello,

On sekmadienis 18 Liepa 2010 23:57:19 Modestas Vainius wrote:
> so Git migration is moving forward slowly. A few notes:
> 
> 1) Qt 3 / KDE 3 stuff will remain on subversion. Their subversion history
> is too messed up (retagging, svn externals) to be worthwhile migrating.
> 
> 2) Our Git repos will not have a full graded access control like subversion
> did. Everyone in the alioth pkg-kde project with SCM permissions will have
> commit access everywhere.

so I plan to be done with Git conversion of kde-{sc,req,std},attic by 
tomorrow. I'll do krap a bit later, I won't do kde-extras.

Hierarchy stays the same as described in the previous mail with addition of 
attic/ where the following will be moved:

'blitz'                => 'attic',
'decibel'              => 'attic',
'meta-kde4'            => 'attic',
'kdelibs-experimental' => 'attic',
'cdbs'                 => 'attic',

wv2 will be moved to krap/.

> 3) I think we will need to add git hooks in order to enforce some
> rules in the repositories. To be honest, our subversion history is not in
> the very good shape wrt consistency (which is partly fault of svn itself).

I also wrote an update hook which will enforce the following rules (as of 
now):

Packaging tags:

* tag is under debian/ namespace;
* tag is annotated;
* format of the tag message first line (<version> <distribution>; 
urgency=<urgency>);
* tag message is in sync with debian/changelog;
* distribution is valid and allowed (unstable, experimental);
* tag commit has a merge base in the master branch;
* tagged tree does not contain anything else but debian/ subdir and
  optionally .git* (can be disabled by hooks.pkgkdeDontRestrictTree);
* a couple of more basic consistency rules;

Packaging branches (master, unstable, experimental etc.):

* branch update is fast-forward;
* branch is not being deleted;
* tree does not contain anything else but debian/ subdir and optionally
  .git* (can be disabled by hooks.pkgkdeDontRestrictTree);
* branch is not scoped (doesn't have /; applies to all branches)

Configuration variables:
* hooks.pkgkdeDontRestrictTree (bool) - do not restrict tree contents to
  debian subdirectory and .git*. Useful for native packages.

Branches rules won't apply to non-packaging branches (i.e. not master, 
unstable or experimental).

Proper painless formatting of the tags may be achieved with `pkgkde-vcs tag` 
tool as of pkg-kde-tools 0.9.3 (just uploaded). The main rationale for rather 
strict tagging rules is the following:

1) avoid bogus tags in the VCS. This happened quite a number of times with svn 
so such a automated checking is clearly needed;

2) ensure that the tag message is informative. I do believe that having 
version, distro and urgency of the upload in the VCS quickly accessible (e.g. 
over gitweb or `git tag -n1`) is quite useful.

I do plan to extend pkgkde-vcs with more functionality like mass 
changes/committing, (mass) cloning, mass pushing etc.

-- 
Modestas Vainius <modestas at vainius.eu>



More information about the pkg-kde-talk mailing list