Chapter 12. Managing Changes with Mercurial Queues
The Patch Management Problem
Here is a common scenario: you need to install a software package from source, but you find a bug that you must fix in the source before you can start using the package. You make your changes, forget about the package for a while, and a few months later you need to upgrade to a newer version of the package. If the newer version of the package still has the bug, you must extract your fix from the older source tree and apply it against the newer version. This is a tedious task, and it’s easy to make mistakes.
This is a simple case of the “patch management” problem. You have an “upstream” source tree that you can’t change; you need to make some local changes on top of the upstream tree; and you’d like to be able to keep those changes separate, so that you can apply them to newer versions of the upstream source.
The patch management problem arises in many situations. Probably the most visible is when a user of an open source software project contributes a bug fix or new feature to the project’s maintainers in the form of a patch.
Distributors of operating systems that include open source software often need to make changes to the packages they distribute so that they will build properly in their environments.
When you have few changes to maintain, it is easy to manage a single patch using the standard diff and patch programs (see Understanding Patches for a discussion of these tools). Once the number of changes ...