Re: Question about Git tree methodology.

From: Stefan Richter
Date: Tue Jul 25 2006 - 10:27:40 EST

Daniel Drake wrote:
> Matt LaPlante wrote:
>> Basically I just want to use it as a method of tracking my own
>> trivial patches (and perhaps give maintainers easier access to them).
> Quilt is very good at doing this kind of thing.

Introductory documentation:*checkout*/quilt/doc/quilt.pdf?root=quilt

> It keeps all your patches in a "patches" subdirectory and makes going
> back and fixing previous patches very easy (git makes this quite hard).
> You can rsync your patches/ directory to any webserver, and anyone else
> can save them in a patches subdirectory and apply them in the same way
> (the equivalent of sharing your tree).

Hi Matt,

yes, Quilt is a good tool especially for maintenance of patch
collections on top of evolving source trees. I for one use it to keep
track of patches for the subsystem of my interest (ieee1394 drivers), to
develop new patches asynchronously to mainline releases, and to publish

The "patches" subdirectories at this site is what quilt itself is
working on. Examples of basic tasks are
$ quilt import # add a foreign patchfile to quilt's collection
$ quilt push # apply next patch listed in patches/series
$ quilt pop # unapply current patch
$ quilt refresh # regenerate the diff of the current patch after the
sources have been edited or otherwise changed

To submit patches to maintainers, either post them with your usual mail
user agent or let "quilt mail ..." prepare the postings or --- as Daniel
wrote --- publish them on a server. In the latter case, take care to
prepend mbox-like headers (especially a "From: " header to denote the
patch's author) so that git users can import those patchfiles easily
with "git am". (The patches on my site still lack those headers because
I rarely forward patches from other authors.)

There are things that Quilt does _not_ do for you:
- update the underlying source tree from other repos
- generate changelogs (I wrote a simple script around Quilt to generate
the changelogs at my site. But that script is quite slow if it has to
handle a bigger number of patches.)
- certainly a few other things which Quilt wasn't intended for...

If you plan to intensively interact with git trees, StGIT ("Stacked GIT"
alias "stg") may also be worth a look:
I haven't tried StGIT myself yet. AFAICS it provides basically the same
functions as Quilt with two apparent differences:
- The three steps to update the underlying source tree "quilt pop -a;
git pull ...; quilt push -a" are available as a single command:
"stg pull ...". Big deal.
- The steps to commit your patches into the underlying git tree are
easily performed by "stg commit".
After a patch was committed to the git tree, you loose the ability to
modify the patch as freely as you could while it was managed by quilt or

To summarize, Quilt or StGIT are a good choice if you plan to develop or
maintain patches which you want to change (update, improve...) in a
different rhythm than the underlying source tree. This is what many
"upstream developers" as well as "downstream distributors" do. Upstream
developers may need to update their patches sometimes a few times before
final submission, e.g. based on change requests from reviewers, or
because the order of patches is to be changed to submit newer critical
patches before older but less critical patches. Downstream distributors
maintain add-ons (e.g. out-of-tree feature patches, customizations,
backported bug fixes) on top of a source tree from upstream.
Stefan Richter
-=====-=-==- -=== ==---
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at