=head1 NAME PATCHES - track and distribute your code changes =head1 DESCRIPTION This page documents how to distribute your changes to GNU LilyPond =head1 ABSTRACT Distributing a change normally goes like this: =over 5 =item * make your fix/add your code =item * Add changes to NEWS, and add yourself to Documentation/AUTHORS.pod =item * generate a patch, =item * e-mail your patch to one of the mailing lists gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org =back =head1 GENERATING A PATCH In F, set TOPLEVEL_MY_PATCH_LEVEL: VERSION: ... TOPLEVEL_MY_PATCH_LEVEL = jcn1 In F, enter a summary of changes: NEWS: pl 0.1.48.jcn1 - added PATCHES.pod Then, from the top of Lily's source tree, type make-patch which leaves your patch as F<./patch-0.1.48.jcn1>. If you didn't configure Lily using --srcdir, you can do: release tar-ball: ../patches/patch-0.1.48.jcn1.gz patch: ../patches/patch-0.1.48.jcn1.gz updeet: ../test/updeet =head1 PREREQUISITES For creating a patch you need =over 5 =item * All items mentioned in F. You're not going to send a patch that you haven't even built, right? =item * GNU Diff =item * Python (version 1.4 or newer). You can of course make a patch by hand, which would go something like: make distclean cd .. diff -urN lilypond-0.1.48 lilypond-0.1.48.jcn1 > patch-0.1.48.jcn1 but there are handy python scripts available. If you're doing development, you'll need Python for other LilyPond scripts anyway. =item * The Lily directory structure, which looks like: lilypond-0.1.48/ patches/ releases/ test/ =back =head1 APPLYING PATCHES If you're following LilyPond development regularly, you probably want to download just the patch for each subsequent release. After downloading the patch (into the patches directory, of course), simply apply it: gzip -dc ../patches/patch-0.1.49.gz | patch -p1 -E and don't forget to make automatically generated files: autoconf 1) configure =head1 SYNCHRONISE If you're not very quick with sending your patch, there's a good chance that an new release of LilyPond comes available. In such a case (and sometimes for other unkown reasons :-), the maintainer will probably ask you to make a new patch against the latest release. Your best bet is to download the latest release, and apply your patch against this new source tree: cd lilypond-0.1.49 gzip -dc ../patches/patch-0.1.48.jcn1.gz | patch -p1 -E autoconf 1) configure Then, make a patch as shown above. 1) patches don't include automatically generated files, i.e. F and files generated by F. =head1 MAINTAINER Han-Wen Nienhuys Just keep on sending those patches!