Mercurial is a free, distributed source control management tool. It efficiently handles projects of any size and offers an easy and intuitive interface.
Andrew Morton originally developed a set of scripts for maintaining kernel patches outside of any SCM tool - quilt whose basic idea is to maintain patches instead of maintaining source files. Patches can be added, removed or reordered, and they can be refreshed as you fix bugs or update to a new base revision. quilt is very powerful, but it is not integrated with the underlying SCM tools. The patch queue extension Mq integrates quilt functionality into Mercurial. Changes are maintained as patches which are committed into Mercurial. Commits can be removed or reordered, and the underlying patch can be refreshed based on changes made in the working directory. The patch directory can also be placed under revision control, so you can have a separate history of changes made to your patches.
PMPU is oriented around the typical "Push / Pull" workflow of distributed SCMs; as such it is designed to make it easy to see what changes are arriving from remote repositories and what changes are due to be pushed upstream. It also has support for creating changeset bundles and for importing both bundles and patches; these are primarily useful when interacting with the development process via e-mail. Rather than re-invent the wheel, PMPU can make use of external history views and commit tools. For mercurial repositories, I recommend the 'hgk' or hgview viewers and the excellent Qct commit tool.