.. This document is © Martin F. Krafft It is available under the terms of the Creative Commons Attribution-NonCommercial-ShareAlike Licence 2.5 ========================================================================== Modern version control systems for cross-distro packaging ========================================================================== .. |event| replace:: DebConf 8, Mar Del Plata, Argentina .. |talkdate| replace:: 11 August 2008 .. |author| replace:: martin f. krafft .. |authoremail| replace:: madduck@debian.org .. |footer| replace:: |event| |bull| |talkdate| .. container:: author |author| <|authoremail|> * `Debian`_ developer * Author of the book `The Debian System — Concepts and Techniques`_ * `Ph.D. student`_, `Lero`_, `CSIS`_, `University of Limerick`_, Ireland .. _Debian: http://debian.org/ .. _Ph.D. student: http://martin-krafft.net/phd/ .. _Lero: http://lero.ie/ .. _CSIS: http://www.csis.ul.ie/ .. _University of Limerick: http://ul.ie/ .. _The Debian System — Concepts and Techniques: http://debiansystem.info/ .. container:: event |event| |talkdate| Introduction ============ Package maintenance is: .. class:: incremental #. debianising the upstream source tree #. creating a package #. developing new features - distro-specific - package-format specific - intended for upstream #. tracking upstream, or importing new release tarballs - keeping track of upstream features - adjusting specific features .. This is pretty distro-independent! What is vcs-pkg.org? ==================== .. class:: incremental - cross-distro - VCS-independent - an endeavour to determine a packaging workflow which accounts for all involved: - distros - QA, release, security teams - contributors .. The goal is enable distros to work together on the version control level Overview of this talk ===================== .. class:: current - New Debian source package formates - A Debian packaging workflow using Git - Where to go from here? Debian source packages, version 3 ================================= ``dpkg-source`` knows a few new (experimental) formats: - git/bzr - quilt VCS source packages =================== Source packages consist of the (compressed, pruned) repository, which is checked out on unpack. Arguments against: .. class:: incremental - new tools required on build daemons and for ``build-essential`` - VCS knowledge required to properly work on the package - dependencies on young, third-party tools quilt source packages ===================== The "wig&pen" format gets rid of ``diff.gz`` files and uses: - ``dsc`` file, as before - ``orig.tar.gz``, as before - ``debian.tar.gz``, which unpacks to ``./debian`` - ``orig-$FEATURE.tar.gz``, which unpacks to ``./$FEATURE`` The use of ``./debian/patches`` is encouraged. Thus, the task becomes how to extract ``./debian/patches`` from version control. Overview of this talk ===================== - New Debian source package formates .. class:: current - A Debian packaging workflow using Git - Where to go from here? Debian packaging with Git ========================= This workflow does not rely on Git-specific features and can be used with other VCSs Used branches: .. class:: incremental - ``upstream``, which tracks upstream - ``upstream/dist``, which contains ``autoconf``-dist changes - ``pristine-tar``, used to recreate tarballs - ``features/*``, features targetted for upstream - ``debian/*``, Debian-specific changes - ``debian``, the main Debianisation branch - ``build``, the integration branch used to build Features of this workflow ========================= .. class:: incremental - features can be developed and maintained independently - the repository contains everything needed to recreate pristine source packages - source packages contain patches for each feature (quilt series) TopGit: managing patch queues with Git ====================================== .. class:: incremental - use an entire branch to track a patch - manage dependencies between patches - allow full use of Git features, including distributed development - similar to Bazaar looms and Mercurial patch queues The big picture =============== .. container:: center .. image:: workflow.png Live demonstration? =================== Do you want to see this in action? Overview of this talk ===================== - New Debian source package formates - A Debian packaging workflow using Git .. class:: current - Where to go from here? Working with other distros ========================== - Why not use the same repository as e.g. Fedora? - Additional feature branch families: - ``distro/*``: (optional) non-upstream changes applicable to *all* distros - ``rpm/*``/``deb/*``: package-format-specific changes - ``ubuntu/*``/``fedora/*``: the ``debian/*`` counterparts How can we make this happen? ============================ .. class:: incremental #. talk to other distros, map out requirements #. design a workflow, in collaboration #. try out the workflow with a few packages #. refine #. provide a wrapper which implements this workflow in a VCS-agnostic way #. Take over the world My only friend, the end… ======================== Thank you for your attention! * Mailing list: http://lists.madduck.net/listinfo/vcs-pkg * "Homepage": http://wiki.debian.org/VcsPackaging .. container:: author |author| <|authoremail|> * http://people.debian.org/~madduck/ * http://martin-krafft.net/phd/ .. include:: licence.en.rst .. include:: common.inc .. footer:: |footer|