dc7 - 1.0


Manoj Srivastava
martin f. krafft
Day 13
Room Basement Talk Room
Start time 14:00
Duration 02:00
ID 53
Event type Workshop
Track DebConf
Language English

Forking Debian every day

Using distributed version control systems for package maintenance

This workshop provides an introduction to the concepts behind the use of branches for packaging, using several examples from day-to-day packaging practise. It outlines a work-flow that efficiently deals with common maintenance use cases and presents a complete implementation of a set of tools implementing the work-flow. This will then be contrasted with other approaches for the same tasks, and advantages and disadvantages discussed.

Package maintenance involves repetitive and thus error-prone tasks of many different kinds: package creation, new upstream releases, contributions, forks, developing multiple versions in parallel, and following policy changes. In all these cases, it makes sense to track changes logically separate from one another, to facilitate submission of fixes or patches to a line of development. For all these use cases, a work-flow can be identified and optimized, automated, and automatically checked and validated.

Distributed version control systems provide robust branching features and can be used to track differences between a software's upstream and the Debian package logically separated from one another: Debian-specific changes are in one branch, LSB-related changes in another, and the user-contributed patch adding an Awesome Feature waiting for upstream approval in a third. When creating a package, these systems allow the maintainer to cherry-pick exactly which branches to make part of the package, and then go on to do the dirty work of merging those into a single source tree. Several developers have already adopted these methods, backed by tools such as arch(tla,baz)/git/darcs-buildpackage; Ubuntu is working on a similar approach for Launchpad.