Gentoo Archives: gentoo-dev

From: Fabian Groffen <grobian@g.o>
To: gentoo-dev@l.g.o
Subject: [gentoo-dev] ChangeLog generation - pros and cons (council discussion request)
Date: Thu, 02 Jun 2011 10:12:05
Message-Id: 20110602091338.GL14065@gentoo.org
1 Following up on the recent discussions about ChangeLogs, and what should
2 be in there, versus what not, this email tries to describe the pros and
3 cons of the frequently mentioned generation of ChangeLogs from the VCS
4 we use.
5
6 I would like the council to discuss the generation of ChangeLogs from
7 the VCS in the next meeting for which this message is in time. I prefer
8 the council to decide upon whether or not generation of ChangeLogs is
9 desirable for Gentoo or not. In this email, I will try to describe the
10 pros and cons, but I invite anyone else to contribute/discuss ideas.
11
12 I start from the assumption that generation of ChangeLogs is NOT limited
13 to any VCS. Hence, I use generated ChangeLogs from CVS using my own
14 script attached to this email. The packages I used were chosen
15 semi-randomly, but absolutely not for who committed to them. Any
16 examples taken are by no means meant as personal attack to the
17 developers involved.
18
19 Simple pros I see mentioned:
20 - no more need for echangelog + repoman commit (identical message)
21 - no discussion on what to include or not (everything is in there)
22
23 Simple cons I see mentioned:
24 - useless information on removals of ebuilds/files
25 - useless information on whitespace changes
26 - inability to edit ChangeLog entries (typos, bug refs, etc.)
27
28 I'll ignore any technical cons regarding resources necessary to
29 generate, retain exact original format, etc.
30
31 Next thing, I compare original ChangeLogs to those generated. I'll
32 highlight some differences that can be noticed. I attached all
33 generated ChangeLogs to this email. I apologise for the "Bob the
34 Builder" names, I was simply too lazy to map all devs to their real
35 names. I'll report on my observations here first, such that the
36 remainder of this email is just the differences in the ChangeLogs.
37
38 1) it appears echangelog messages more than just a couple of times
39 differ from the repoman commit messages; sometimes useful information
40 is lost when just using the VCS logs
41 2) typo fixing on VCS-generated logs is sometimes necessary, but
42 probably impossible
43 3) dates and new ebuilds generated from VCS are always correct,
44 ChangeLog editting/echangelog -> commit delays can cause
45 inconsitencies
46 4) package moves might lose all history for essentially the same files
47 5) entries for all commits show up, including those that weren't
48 originally tracked in ChangeLog for some reason
49
50 If a move to VCS-generated ChangeLogs is to be made, it appears the
51 council has to decide that the following is desirable:
52 - a commit message is supposed to be always right/correct
53 - since the commit message is right, either
54 - repoman commit runs echangelog, or
55 - ChangeLogs are generated on current CVS as well
56 - any typos and incorrect refs, bugs, messages, etc. are accepted as
57 drawback of the system that does not compare to its advantages
58 - it is accepted that all current information in the ChangeLogs gets
59 lost in favour of the VCS commit messages
60 - there is no point in discussing what should be in or out of a
61 ChangeLog, since by definition, "everything" is in (and tools should
62 effectuate so ASAP)
63
64 If the council deems a separate ChangeLog file useful, they decide that:
65 - ChangeLog messages can (and sometimes should) be different from commit
66 messages, as they are intended as information for users
67 - editting ChangeLog messages is necessary to emit the most correct
68 information to our users at all times
69 - a clear policy is necessary on what is going in the ChangeLog and what
70 not (like the current "common sense" discussions going on and the
71 updated devmanual)
72 - basically nothing changes, and the whole idea of generating ChangeLogs
73 from VCS is no longer a point of discussion
74
75
76 If I missed anything, please discuss.
77 The remainder of this email is just diffs with comments inline.
78
79 dev-vcs/git:
80 > --- ChangeLog 2011-05-31 08:47:22.000000000 +0200
81 > +++ ChangeLog.2 2011-06-02 09:47:58.177234000 +0200
82 > @@ -1,12 +1,12 @@
83 > # ChangeLog for dev-vcs/git
84 > # Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
85 > -# $Header: /var/cvsroot/gentoo-x86/dev-vcs/git/ChangeLog,v 1.95 2011/05/31 06:4
86 > 7:22 grobian Exp $
87 > +# $Header: this/file/is/a/generated/ChangeLog,v 1.1 2011/06/02 09:47:14 cvsps2changelog Exp $
88
89 The $Header line is likely going to be useless, and probably is best
90 removed. Is there something useful that can be substituted here?
91
92 > -*git-1.7.3.2 (22 Oct 2010)
93 > + 22 Oct 2010; Bob the Builder <mduft@g.o> git-1.7.3.2.ebuild,
94 > + -files/git-1.6.6.1-interix6.patch, -files/git-1.7.1-interix.patch,
95 > + +files/git-1.7.3.2-interix.patch:
96 > + added new (better :)) patch, removed obsolete ones.
97 >
98 > - 22 Oct 2010; Markus Duft <mduft@g.o> git-1.7.3.2.ebuild,
99 > - +files/git-1.7.3.2-interix.patch,
100 > - -files/git-1.6.6.1-interix6.patch,
101 > - -files/git-1.7.1-interix.patch:
102 > - removed obsolete patches, added a new one instead. the new patch matches
103 > - more the spirit of upstream, and has been submitted there.
104 > +*git-1.7.3.2 (22 Oct 2010)
105 >
106 > - 11 Nov 2010; Sebastian Pipping <sping@g.o> git-9999.ebuild:
107 > - Make live ebuild depend on asciidoc and xmlto independent of flag "doc"
108 > - (bug #343063)
109 > + 11 Nov 2010; Bob the Builder <sping@g.o> git-9999.ebuild:
110 > + dev-vcs/git: Fix dependencies of live ebuild (bug #343063)
111
112 (Slightly) different commit messages show up. In this case, the
113 echangelog message was more explanatory than the commit message. More
114 trivial, but not always innocent ones:
115
116 > 08 Jan 2011; Robin H. Johnson <robbat2@g.o> git-1.7.3.4-r1.ebuild:
117 > - Backport bug #350330 automagic CVS to stable ebuild.
118 > + Backport bug #350330 automagic perl to stable ebuild.
119 >
120 > 07 Jan 2011; Robin H. Johnson <robbat2@g.o> git-1.7.3.5-r1.ebuild,
121 > +files/git-1.7.3.5-optional-cvs.patch:
122 > - Bug #350330: Avoid automagic CVS.
123 > + Bug #350330: Avoid automagic CVS. Need to port to 1.7.4 still.
124 >
125 > 07 Jan 2011; Robin H. Johnson <robbat2@g.o> +git-1.7.4_rc1-r1.ebuild,
126 > git-9999.ebuild:
127 > - Port the 1.7.3.5-r1 Prefix USE=python code to newer ebuilds since Prefix team
128 > - has tested.
129 > + Port the 1.7.3.5-r1 Prefix USE=python code to newer ebuilds since Prefix
130 > + team ha tested.
131
132 It appears there were some typos here, and were fixed later to CVS.
133 There is no way to fix this. CVS allows editing commit messages, but
134 that's disabled for obvious reasons. I'm not sure about git, but from
135 what I've read, it becomes difficult (if not impossible) as soon as the
136 commit has been pushed.
137
138 > -*git-1.7.5.2 (30 May 2011)
139 > +*git-1.7.5.3 (30 May 2011)
140 >
141 > 30 May 2011; Robin H. Johnson <robbat2@g.o> +git-1.7.5.3.ebuild,
142 > git-9999.ebuild:
143
144 A clear advantage of the generated ChangeLog; it gets the version right
145 even after long outstanding bumps.
146
147 > +*git-1.7.5_rc1 (07 Apr 2011)
148 > +*git-1.7.4.4 (07 Apr 2011)
149
150 Similar, but with dates. This may be a timezone problem, though.
151
152 > + 08 Jan 2011; Bob the Builder <arfrever@g.o> git-1.7.3.5-r2.ebuild,
153 > + git-1.7.4_rc1-r2.ebuild, git-9999.ebuild:
154 > + Use $(PYTHON -a). EPYTHON is internal variable.
155 > +
156 > + 28 Dec 2010; Bob the Builder <mr_bones_@g.o> git-1.7.3.2-r1.ebuild,
157 > + git-1.7.3.2.ebuild, git-1.7.3.3.ebuild, git-1.7.3.4-r1.ebuild,
158 > + git-1.7.3.4.ebuild:
159 > + whitespace
160
161 Another advantage, "missing" entries are inserted in the generated ChangeLog.
162
163 dev-php/magickwand (a pkgmoved package):
164 > --- ChangeLog 2011-04-10 19:37:54.000000000 +0200
165 > +++ ChangeLog.2 2011-06-02 10:32:41.290731000 +0200
166 > @@ -1,65 +1,10 @@
167 > -# ChangeLog for dev-php5/magickwand
168 > -# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
169 > -# $Header: /var/cvsroot/gentoo-x86/dev-php/magickwand/ChangeLog,v 1.1 2011/04/10 17:37:54 olemarkus Exp $
170 > -
171 > -*magickwand-1.0.8-r1 (03 Nov 2010)
172 > -
173 > - 03 Nov 2010; Matti Bickel <mabi@g.o> +magickwand-1.0.8-r1.ebuild:
174 > - create minor slotting compatible version
175 > -
176 > -*magickwand-1.0.8 (12 Apr 2010)
177 > -
178 > - 12 Apr 2010; <mabi@g.o> -magickwand-1.0.6.ebuild,
179 > - -magickwand-1.0.7.ebuild, +magickwand-1.0.8.ebuild:
180 > - version bump (bug #279836), older versions do not work with newer
181 > - imagemagick
182 > -
183 > - 20 Mar 2009; Jorge Manuel B. S. Vicetto <jmbsvicetto@g.o>
184 > - metadata.xml:
185 > - Removing anant as a maintainer since he was retired.
186 > -
187 > - 12 Jun 2008; Christian Hoffmann <hoffie@g.o>
188 > - files/imagemagick-pre-6.3.8-compat.patch:
189 > - updated patch by Martin von Gagern <Martin.vGagern@×××.net> (bug 215671),
190 > - previous version missed some MagickWand-config calls. magickwand-1.0.7
191 > - should now really build with <imagemagick-6.3.8
192 > -
193 > - 09 Jun 2008; Christian Hoffmann <hoffie@g.o>
194 > - +files/imagemagick-pre-6.3.8-compat.patch, magickwand-1.0.7.ebuild:
195 > - adding patch by Martin von Gagern <Martin.vGagern@×××.net> (bug 215671) to
196 > - allow for building against <imagemagick-6.3.8 again and adjust *DEPEND
197 > - accordingly
198 > -
199 > - 08 Jun 2008; Christian Hoffmann <hoffie@g.o>
200 > - magickwand-1.0.7.ebuild:
201 > - bump imagemagick dependency to 6.3.9.7, bug 215671
202 > -
203 > -*magickwand-1.0.7 (03 Jun 2008)
204 > -
205 > - 03 Jun 2008; Luca Longinotti <chtekk@g.o> -magickwand-1.0.4.ebuild,
206 > - -magickwand-1.0.5.ebuild, +magickwand-1.0.7.ebuild:
207 > - Version bump.
208 > -
209 > -*magickwand-1.0.6 (11 Feb 2008)
210 > -
211 > - 11 Feb 2008; Raúl Porcel <armin76@g.o> +magickwand-1.0.6.ebuild:
212 > - Version bump, from the php overlay
213 > -
214 > -*magickwand-1.0.5 (06 Oct 2007)
215 > -
216 > - 06 Oct 2007; Anant Narayanan <anant@g.o> +magickwand-1.0.5.ebuild:
217 > - Bump to 1.0.5
218 > -
219 > - 27 Apr 2007; Steve Dibb <beandog@g.o> magickwand-1.0.4.ebuild:
220 > - Add ~amd64, bug 175092
221 > -
222 > - 17 Apr 2007; Anant Narayanan <anant@g.o> magickwand-1.0.4.ebuild:
223 > - Fix typo in PHP_EXT_INI and add explicit RDEPEND.
224 > -
225 > -*magickwand-1.0.4 (17 Apr 2007)
226 > -
227 > - 17 Apr 2007; Anant Narayanan <anant@g.o> +metadata.xml,
228 > - +magickwand-1.0.4.ebuild:
229 > - New ebuild for the MagickWand PHP extension; thanks to Matthew Schultz, bug
230 > - #125593
231 > -
232 > +# ChangeLog for dev-php/magickwand
233 > +# Copyright 1999-2011 Gentoo Foundation; Distributed under the GPL v2
234 > +# $Header: this/file/is/a/generated/ChangeLog,v 1.1 2011/06/02 10:32:04 cvsps2changelog Exp $
235 > +
236 > +*magickwand-1.0.8-r1 (10 Apr 2011)
237 > +
238 > + 10 Apr 2011; Bob the Builder <olemarkus@g.o>
239 > + +magickwand-1.0.8-r1.ebuild, +metadata.xml,
240 > + +files/imagemagick-pre-6.3.8-compat.patch:
241 > + Moved from dev-php5/magickwand
242
243 Obviously, all history is lost. VCSs other than CVS might keep history
244 across moves here (svn, git, hg...), hence a "follow" could perhaps find
245 renames. Question is if this can be detected in such a way that a
246 useful ChangeLog can be generated. Will version bumps that are almost
247 identical copies, that show up as copies/renames cause issues here?
248
249 sys-devel/gcc-config:
250 > - 16 Mar 2008; Christian Heim <phreak@g.o> Manifest:
251 > - Fixing the Manifest (emerge is complaining about missing
252 > - $FILESDIR/wrapper-1.5.0.o).
253
254 This entry disappears because Manifest and ChangeLog changes are ignored.
255
256 > + 02 Jan 2009; Mike Frysinger <vapier@g.o> files/wrapper-1.5.1.c:
257 > + optimize memory/string usage a bit more
258 >
259 > + 16 Mar 2008; Mike Frysinger <vapier@g.o> -gcc-config-1.3.13-r4.ebuild,
260 > + -gcc-config-1.3.14.ebuild, -gcc-config-1.3.15-r1.ebuild,
261 > + -files/gcc-config-1.3.13, -files/gcc-config-1.3.14, -files/gcc-config-1.3.15,
262 > + -files/wrapper-1.4.7.c:
263 > + old
264
265 Both entries are added in the generated ChangeLog variant.
266
267
268 --
269 Fabian Groffen
270 Gentoo on a different level

Attachments

File name MIME type
cvsps2changelog.sh application/x-sh
ChangeLog.2 text/plain
ChangeLog.2 text/plain
ChangeLog.2 text/plain

Replies