git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: John Keeping <john@keeping.me.uk>
To: Paul Menzel <paulepanter@users.sourceforge.net>
Cc: git@vger.kernel.org
Subject: Re: Looking for pre-commit hook to check whitespace errors but not for all files
Date: Sat, 14 Dec 2013 16:59:15 +0000	[thread overview]
Message-ID: <20131214165914.GJ3163@serenity.lan> (raw)
In-Reply-To: <1387034894.4636.9.camel@mattotaupa>

On Sat, Dec 14, 2013 at 04:28:14PM +0100, Paul Menzel wrote:
> in coreboot we try to check for whitespace errors before committing. Of
> course a pre-commit hook is the way to go, but unfortunately it is not
> so simple (at least for me) as the following requirements exist.
> 
> 1. Only the files actually committed should be checked. That means
> running `git commit -a`, abort that and then running `git commit
> some/file` should only check `some/file` for whitespace errors.
> 
> 2. There are certain files that are allowed to have whitespace errors.
> In our case these are `*.patch` and `*.diff` files which by design seem
> to contain whitespace error.
> 
> Currently the whole tree is checked, which takes a lot of time [1].
> 
> I tried to come up with a patch [2], but failed so far. Best would be to
> have
> 
>     $ git diff --check --only-committed-files --exclude "*patch$"
> 
> where I could not find a way for the last to switches.
> 
> Currently, I would use
> 
>     $ git diff-index --cached --name-only $against -- | grep -v patch$
> 
> and pass that list to some whitespace check program. Unfortunately that
> still does not fulfill the first requirement.
> 
> What am I missing to solve this elegantly?

I think you want to combine .gitattributes with something like the
diff-index above:

	$ cat >.gitattributes <<-EOF
	*.patch whitespace=false
	*.diff whitespace=false
	EOF

	$ git diff-index --check --cached $against --

  reply	other threads:[~2013-12-14 17:09 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-12-14 15:28 Looking for pre-commit hook to check whitespace errors but not for all files Paul Menzel
2013-12-14 16:59 ` John Keeping [this message]
2013-12-16 19:06 ` Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20131214165914.GJ3163@serenity.lan \
    --to=john@keeping.me.uk \
    --cc=git@vger.kernel.org \
    --cc=paulepanter@users.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).