On Mon, Jun 11, 2018 at 21:59:19 -0400, John Hawkinson wrote:

> Valery Ushakov <u...@stderr.spb.ru> wrote on Tue, 12 Jun 2018
> at 04:50:36 +0300 in <20180612015036.ge15...@pony.stderr.spb.ru>:
> 
> > Please, can you keep your commit messages to the point?
> > 
> >   "Fix unportable left shift"
> > 
> > is probably a good enough summary.  You don't have to paste the test
> > suite results and the actual diffs in free form as well.
> 
> What is wrong with a long commit message, as long as it is
> summarized clearly at the top, as was done here? I'd much rather
> have a long explanation than only the summary.

There's a fine line between an explanatory and an overly long commit
message (as Bryan Cantrill put it in one interview, "there's a fine
line between elegant and sleazy").

Also the communication context of a log message is the output of cvs
log.  The commit mail (i.e. the context of source-changes) may be a
factor but only a secondary one.


| Correct Undefined Behavior in gzip(1)

This is being committed to gzip.c.  You will read this commit message
when reading the output of cvs log for gzip.c.  I don't think it's
useful to repeat in the commit message that this commit is to gzip.


| Unportable left shift reported with MKSANITIZER=yes USE_SANITIZER=undefined:
|
| # progress -zf ./games.tgz  tar -xp -C "./" -f -
| /public/src.git/usr.bin/gzip/gzip.c:2126:33: runtime error: left shift of 251 
by
|  24 places cannot be represented in type 'int'
| 100% 
|**************************************************************************
| **************************************| 44500 KiB  119.69 MiB/s    00:00 ETA


An example of incorrect behaviour of a program that is being fixed is
informative.  But the above is like fixing a missing semicolon and
quoting compiler error in the commit message.  E.g.

#   compile  ofwboot/Locore.o
/home/uwe/work/netbsd/build/tools/bin/powerpc--netbsd-gcc -Os -ffreestanding  
-msoft-float  -fno-unwind-tables -fno-asynchronous-unwind-tables -Wall 
-Wmissing-prototypes -Wstrict-prototypes -Wpointer-arith    -std=gnu99   
-Werror     -D_STANDALONE -DSUPPORT_DHCP -DSUPPORT_USTARFS 
-DHAVE_CHANGEDISK_HOOK --sysroot=/home/uwe/work/netbsd/build/distrib/macppc -I. 
-I/home/uwe/work/netbsd/ro/src/sys/arch/macppc/stand/ofwboot 
-I/home/uwe/work/netbsd/ro/src/sys/arch/macppc/stand/ofwboot/../../.. 
-I/home/uwe/work/netbsd/ro/src/sys/arch/macppc/stand/ofwboot/../../../.. 
-DRELOC=0xE00000 -DRELOC_FLATFILE=0x 
-I/home/uwe/work/netbsd/ro/src/sys/arch/macppc/stand/ofwboot/../../../../lib/libkern/../../../common/lib/libc/quad
 
-I/home/uwe/work/netbsd/ro/src/sys/arch/macppc/stand/ofwboot/../../../../lib/libkern/../../../common/lib/libc/string
 
-I/home/uwe/work/netbsd/ro/src/sys/arch/macppc/stand/ofwboot/../../../../lib/libkern/../../../common/lib/libc/arch/powerpc/string
  -c    /home/uwe/work/netbsd/ro/src/sys/arch/macppc/stand/ofwboot/Locore.c
/home/uwe/work/netbsd/ro/src/sys/arch/macppc/stand/ofwboot/Locore.c: In 
function 'setup':
/home/uwe/work/netbsd/ro/src/sys/arch/macppc/stand/ofwboot/Locore.c:659:1: 
error: expected ';' before '}' token
 }
 ^

Do you think that would be a reasonable part of a commit message?

 
| Refactor the following code into something that is more clear
| and fix signed integer shift,

This is the third time the log tells us it's fixing a left shift,
counting the first sentence of the above passage and the output from
the sanitizer.


| [...]  by casting all buf[] elements to
| (unsigned int):
| 
| unsigned char buf[8];
| uint32_t usize;
| [...]
| else {
|     usize = buf[4] | buf[5] << 8 |
|             buf[6] << 16 | buf[7] << 24;
| [...]
| 
| New version:
| 
|     usize = buf[4];
|     usize |= (unsigned int)buf[5] << 8;
|     usize |= (unsigned int)buf[6] << 16;
|     usize |= (unsigned int)buf[7] << 24;

This just repeats the actual diff in free form.


| Only the "<< 24" part needs explicit cast, but for consistency make the
| integer promotion explicit and clear to a code reader.

I'm on the fence for this one.  I'd say it's redundant.  It doesn't
help that the actual change is sloppy as it casts to a different type
than the result - usize is uint32_t, not unsigned int.


| Sponsored by <The NetBSD Foundation>

I'm not sure this is relevant either.


To sum it up, out of 30+ lines of the commit message, the relevant
information is contained only in (part of) one line.

-uwe

Reply via email to