Jim Meyering wrote: > Currently the server side hook that runs "git diff --check" > to prevent pushing a change that adds trailing blanks is > more strict than our "make syntax-check" hook, since the former > rejects any change that adds blank lines at the end of a file, > while "make syntax-check" doesn't complain about that. > > The two should be consistent. > One way is to make "make syntax-check" more strict. > If we were to do that, we'd have to choose between > cleaning existing files and exempting them from the new test. > Cleaning is easy and doesn't impact tests at all, so I prefer it. > > Here's what would be involved: > > - remove 121 trailing newlines from 109 files by running this command: > git ls-files -z | xargs -0 perl -pi -0777 -e 's/\n\n+$/\n/' > > Add a rule to cfg.mk so that "make syntax-check" warns about > any new violations. It might run something like this: > > git ls-files -z \ > | xargs -0 perl -ln -0777 -e '/\n(\n+)$/ and print "$ARGV: ".length $1' > > That command prints the name of each offending file with its trailing > blank line count. While it takes well under a second on my system, > (admittedly, with a hot cache), it's not well optimized, reading > each file into memory and processing it. Here are two change-sets to implement that. The first just removes all trailing blank line, so I've omitted its boring 100+ diffs. >From 90046bad3bb688f8bfddfedcf3b681cf9b99028d Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@xxxxxxxxxx> Date: Thu, 16 Jul 2009 08:25:36 +0200 Subject: [PATCH 1/2] remove all trailing blank lines by running this command: git ls-files -z | xargs -0 perl -pi -0777 -e 's/\n\n+$/\n/' This is in preparation for a more strict make syntax-check rule that will detect trailing blank lines. --- COPYING.LIB | 2 -- NEWS | 1 - acinclude.m4 | 1 - .../0001-Step-1-of-8-Define-the-public-API.patch | 1 - ...tep-2-of-8-Define-the-internal-driver-API.patch | 1 - ...0003-Step-3-of-8-Implement-the-public-API.patch | 1 - ...ep-4-of-8-Define-the-wire-protocol-format.patch | 1 - ...0005-Step-5-of-8-Implement-the-RPC-client.patch | 1 - ...of-8-Implement-the-server-side-dispatcher.patch | 1 - ...-Step-7-of-8-Implement-the-driver-methods.patch | 1 - .../0008-Step-8-of-8-Add-virsh-support.patch | 1 - docs/devhelp/devhelp.xsl | 2 -- docs/devhelp/html.xsl | 2 -- docs/examples/python/README | 1 - docs/examples/python/dominfo.py | 2 -- docs/library.xen | 1 - docs/news.xsl | 1 - docs/schemas/capability.rng | 1 - docs/testnetdef.xml | 1 - docs/testnetpriv.xml | 1 - examples/domain-events/events-python/event-test.py | 1 - python/libvirt_wrap.h | 1 - qemud/THREADING.txt | 1 - qemud/libvirtd_qemu.aug | 1 - src/logging.c | 1 - src/lxc_conf.h | 1 - src/network_conf.c | 1 - src/network_conf.h | 1 - src/nodeinfo.c | 2 -- src/opennebula/one_client.c | 2 -- src/opennebula/one_client.h | 2 -- src/opennebula/one_conf.c | 1 - src/opennebula/one_conf.h | 1 - src/qemu_conf.c | 1 - src/storage_backend.c | 1 - src/vbox/vbox_XPCOMCGlue.c | 1 - src/vbox/vbox_XPCOMCGlue.h | 1 - src/veth.c | 1 - tests/capabilityschemadata/caps-qemu-kvm.xml | 2 -- tests/capabilityschemadata/caps-test.xml | 2 -- tests/confdata/libvirtd.conf | 2 -- ...ge_serial_3600c0ff000d7a2a5d463ff4902000000.xml | 2 -- tests/nodeinfodata/linux-nodeinfo-1.cpuinfo | 1 - tests/nodeinfodata/linux-nodeinfo-2.cpuinfo | 1 - tests/nodeinfodata/linux-nodeinfo-4.cpuinfo | 1 - tests/nodeinfodata/linux-nodeinfo-5.cpuinfo | 1 - tests/nodeinfodata/linux-nodeinfo-6.cpuinfo | 1 - tests/nodeinfotest.c | 1 - tests/object-locking.ml | 2 -- tests/reconnect.c | 1 - tests/sexpr2xmldata/sexpr2xml-bridge-ipaddr.sexpr | 1 - tests/sexpr2xmldata/sexpr2xml-disk-block.sexpr | 1 - .../sexpr2xml-disk-drv-blktap-qcow.sexpr | 1 - .../sexpr2xml-disk-drv-blktap-raw.sexpr | 1 - tests/sexpr2xmldata/sexpr2xml-disk-file.sexpr | 1 - tests/sexpr2xmldata/sexpr2xml-net-bridged.sexpr | 1 - tests/sexpr2xmldata/sexpr2xml-net-e1000.sexpr | 1 - tests/sexpr2xmldata/sexpr2xml-net-routed.sexpr | 1 - tests/sexpr2xmldata/sexpr2xml-pci-devs.sexpr | 1 - tests/sexpr2xmldata/sexpr2xml-pv-localtime.sexpr | 1 - .../sexpr2xml-pv-vfb-new-vncdisplay.sexpr | 1 - tests/sexpr2xmldata/sexpr2xml-pv-vfb-new.sexpr | 1 - tests/sexpr2xmldata/sexpr2xml-pv-vfb-orig.sexpr | 1 - tests/sexpr2xmldata/sexpr2xml-pv.sexpr | 1 - tests/sexpr2xmltest.c | 1 - tests/storagepoolschemadata/pool-fs.xml | 1 - tests/storagepoolschemadata/pool-netfs.xml | 1 - tests/storagevolschemadata/vol-logical.xml | 1 - tests/testutilsqemu.h | 1 - tests/testutilsxen.h | 1 - tests/xencapsdata/xen-i686-pae-hvm.cpuinfo | 1 - tests/xencapsdata/xen-i686-pae.cpuinfo | 2 -- tests/xencapsdata/xen-i686.cpuinfo | 1 - tests/xencapstest.c | 1 - tests/xmconfigtest.c | 1 - tests/xml2sexprdata/xml2sexpr-bridge-ipaddr.xml | 1 - .../xml2sexpr-disk-block-shareable.xml | 1 - tests/xml2sexprdata/xml2sexpr-disk-block.xml | 1 - tests/xml2sexprdata/xml2sexpr-disk-drv-blkback.xml | 1 - .../xml2sexpr-disk-drv-blktap-qcow.xml | 1 - .../xml2sexpr-disk-drv-blktap-raw.xml | 1 - tests/xml2sexprdata/xml2sexpr-disk-drv-blktap.xml | 1 - tests/xml2sexprdata/xml2sexpr-disk-drv-loop.xml | 1 - tests/xml2sexprdata/xml2sexpr-disk-file.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-kernel.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-localtime.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-parallel-tcp.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-serial-file.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-serial-null.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-serial-pipe.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-serial-pty.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-serial-stdio.xml | 1 - .../xml2sexpr-fv-serial-tcp-telnet.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-serial-tcp.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-serial-udp.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-serial-unix.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-sound.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-usbmouse.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-usbtablet.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-utc.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv-vncunused.xml | 1 - tests/xml2sexprdata/xml2sexpr-fv.xml | 1 - tests/xml2sexprdata/xml2sexpr-net-bridged.xml | 1 - tests/xml2sexprdata/xml2sexpr-net-e1000.xml | 1 - tests/xml2sexprdata/xml2sexpr-net-routed.xml | 1 - tests/xml2sexprdata/xml2sexpr-pci-devs.xml | 1 - tests/xml2sexprdata/xml2sexpr-pv-bootloader.xml | 1 - tests/xml2sexprdata/xml2sexpr-pv.xml | 1 - tests/xml2sexprtest.c | 1 - 109 files changed, 0 insertions(+), 122 deletions(-) ... >From 9d93638ab94709f5a5f5b48db506e1d0afbe3504 Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@xxxxxxxxxx> Date: Thu, 16 Jul 2009 09:06:58 +0200 Subject: [PATCH 2/2] make "make syntax-check" consistent with "git diff --check" This makes "make syntax-check" fail when a version-controlled file contains a trailing blank line. * cfg.mk (sc_prohibit_trailing_blank_lines): New rule. --- cfg.mk | 9 +++++++++ 1 files changed, 9 insertions(+), 0 deletions(-) diff --git a/cfg.mk b/cfg.mk index 3b3d57f..0bf935d 100644 --- a/cfg.mk +++ b/cfg.mk @@ -228,6 +228,15 @@ sc_libvirt_unmarked_diagnostics: { echo '$(ME): found unmarked diagnostic(s)' 1>&2; \ exit 1; } || : +# Disallow trailing blank lines. +sc_prohibit_trailing_blank_lines: + @$(VC_LIST_EXCEPT) | xargs perl -ln -0777 -e \ + '/\n\n+$$/ and print $$ARGV' > $@-t + @found=0; test -s $@-t && { found=1; cat $@-t 1>&2; \ + echo '$(ME): found trailing blank line(s)' 1>&2; }; \ + rm -f $@-t; \ + test $$found = 0 + # We don't use this feature of maint.mk. prev_version_file = /dev/null -- 1.6.4.rc0.127.g81400 -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list