]> git.donarmstrong.com Git - lilypond.git/blob - Documentation/PATCHES.pod
e98860d0824c212161d710458411d60b18e0e792
[lilypond.git] / Documentation / PATCHES.pod
1 =head1 NAME
2
3 PATCHES - track and distribute your code changes
4
5 =head1 DESCRIPTION
6
7 This page documents how to distribute your changes to GNU LilyPond
8
9 =head1 ABSTRACT
10
11 Distributing a change normally goes like this:
12
13 =over 5
14
15 =item *
16
17 make your fix/add your code 
18
19 =item *
20
21 generate a patch, 
22
23 =item *
24
25 e-mail your patch to one of the mailing lists
26 gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org
27 (or if you're a bit shy, to the maintainer).
28
29 =back
30
31 =head1 GENERATING A PATCH
32
33 In F<VERSION>, set TOPLEVEL_MY_PATCH_LEVEL:
34
35     VERSION:
36         ...
37         TOPLEVEL_MY_PATCH_LEVEL = jcn1
38
39 In F<NEWS>, enter a summary of changes:
40
41     NEWS:
42         pl 0.1.48.jcn1
43                 - added PATCHES.pod
44
45 Then, type something like
46
47     make dist
48     mv out/lilypond-0.1.48.jcn1.tar.gz ../releases
49     make-patch
50
51 which leaves your patch as F<./patch-0.1.48.jcn1>.
52
53 or even simpler:
54
55     release
56
57     tar-ball: ../patches/patch-0.1.48.jcn1.gz
58     patch: ../patches/patch-0.1.48.jcn1.gz
59     updeet: ../test/updeet
60
61 =head1 PREREQUISITES
62
63 For creating a patch you need
64
65 =over 5
66
67 =item *
68
69 All items mentioned in F<INSTALL>.  You're not going to send a patch
70 that you haven't even built, right?
71
72 =item *
73
74 GNU Diff
75
76 =item *
77
78 Python (version 1.4 or newer).  
79 You can of course make a patch by hand, which would go something like:
80
81     make distclean
82     cd ..
83     diff -urN lilypond-0.1.48 lilypond-0.1.48.jcn1 > patch-0.1.48.jcn1
84
85 but there are handy python scripts available.  If you're doing development,
86 you'll need Python for other LilyPond scripts anyway.
87
88 =item *
89
90 The Lily directory structure, which looks like:
91
92     lilypond-0.1.48/
93     patches/
94     releases/
95     test/
96
97 =back
98         
99 =head1 SYNCHRONISE
100
101 If you're not very quick with sending your patch, there's a good chance
102 that an new release of LilyPond comes available.  In such a case (and
103 sometimes for other unkown reasons :-), the maintainer will probably ask
104 you to make a new patch against the latest release.
105 Your best bet is to download the latest release, and apply your patch
106 against this new source tree:
107
108     cd lilypond-0.1.49
109     zpatch -p0 -E < ../patches/patch-0.1.48.jcn1.gz
110
111 Then, make a patch as shown above.
112
113 =head1 MAINTAINER
114
115 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
116
117 Just keep on sending those patches!
118 =head1 NAME
119
120 PATCHES - track and distribute your code changes
121
122 =head1 DESCRIPTION
123
124 This page documents how to distribute your changes to GNU LilyPond
125
126 =head1 ABSTRACT
127
128 Distributing a change normally goes like this:
129
130 =over 5
131
132 =item *
133
134 make your fix/add your code 
135
136 =item *
137
138 generate a patch, 
139
140 =item *
141
142 e-mail your patch to one of the mailing lists
143 gnu-music-discuss@gnu.org or bug-gnu-music@gnu.org
144 (or if you're a bit shy, to the maintainer).
145
146 =back
147
148 =head1 GENERATING A PATCH
149
150 In F<VERSION>, set TOPLEVEL_MY_PATCH_LEVEL:
151
152     VERSION:
153         ...
154         TOPLEVEL_MY_PATCH_LEVEL = jcn1
155
156 In F<NEWS>, enter a summary of changes:
157
158     NEWS:
159         pl 0.1.48.jcn1
160                 - added PATCHES.pod
161
162 Then, type something like
163
164     make-dist
165     mv out/lilypond-0.1.48.jcn1.tar.gz ../releases
166     make-patch
167
168 which leaves your patch as F<./patch-0.1.48.jcn1>.
169
170 or even simpler:
171
172     release
173
174     tar-ball: ../patches/patch-0.1.48.jcn1.gz
175     patch: ../patches/patch-0.1.48.jcn1.gz
176     updeet: ../test/updeet
177
178 =head1 PREREQUISITES
179
180 For creating a patch you need
181
182 =over 5
183
184 =item *
185
186 All items mentioned in F<INSTALL>.  You're not going to send a patch
187 that you haven't even built, right?
188
189 =item *
190
191 GNU Diff
192
193 =item *
194
195 Python (version 1.4 or newer).  
196 You can of course make a patch by hand, which would go something like:
197
198     make distclean
199     cd ..
200     diff -urN lilypond-0.1.48 lilypond-0.1.48.jcn1 > patch-0.1.48.jcn1
201
202 but there are handy python scripts available.  If you're doing development,
203 you'll need Python for other LilyPond scripts anyway.
204
205 =item *
206
207 The Lily directory structure, which looks like:
208
209     lilypond-0.1.48/
210     patches/
211     releases/
212     test/
213
214 =back
215         
216 =head1 SYNCHRONISE
217
218 If you're not very quick with sending your patch, there's a good chance
219 that an new release of LilyPond comes available.  In such a case (and
220 sometimes for other unkown reasons :-), the maintainer will probably ask
221 you to make a new patch against the latest release.
222 Your best bet is to download the latest release, and apply your patch
223 against this new source tree:
224
225     cd lilypond-0.1.49
226     zpatch -p0 -E < ../patches/patch-0.1.48.jcn1.gz
227
228 Then, make a patch as shown above.
229
230 =head1 MAINTAINER
231
232 Han-Wen Nienhuys <hanwen@cs.ruu.nl>
233
234 Just keep on sending those patches!