From: Paul Eggert <eggert@cs.ucla.edu>
To: Noam Postavsky <npostavs@users.sourceforge.net>
Cc: martin rudalics <rudalics@gmx.at>,
emacs-devel <emacs-devel@gnu.org>,
Andreas Schwab <schwab@suse.de>,
Yuri Khan <yuri.v.khan@gmail.com>
Subject: Re: git pre-commit hook for merges (WAS: master has switched from Automake to GNU Make)
Date: Sat, 29 Apr 2017 11:44:06 -0700 [thread overview]
Message-ID: <a4de4a86-5933-dade-9b86-3166ab043adf@cs.ucla.edu> (raw)
In-Reply-To: <CAM-tV-8-QnWDJ04cQXt1jPr-ufrZ6X4p7yTNmrsS7aJ5HrSKWw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 409 bytes --]
Noam Postavsky wrote:
> Since git only runs the hooks on the merged changes when you pass
> --no-commit to 'git merge', defaulting to non-blind merge doesn't
> really work anyway.
Thanks for looking into this. I guess I'll have to rethink how I merge. In the
meantime I installed the attached simpler patch, which doesn't bother with an
environment variable and simply skips the checks in a two-way merge.
[-- Attachment #2: 0001-Allow-bypassing-of-some-checks-when-merging.patch --]
[-- Type: text/x-diff, Size: 1899 bytes --]
From 8d323317768aaebfc53e01338dd0a9933d1d7de4 Mon Sep 17 00:00:00 2001
From: Paul Eggert <eggert@cs.ucla.edu>
Date: Sat, 29 Apr 2017 11:28:52 -0700
Subject: [PATCH] Allow bypassing of some checks when merging
* build-aux/git-hooks/pre-commit: Don't check merged-in changes.
---
build-aux/git-hooks/pre-commit | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/build-aux/git-hooks/pre-commit b/build-aux/git-hooks/pre-commit
index 6483bfc..548bf93 100755
--- a/build-aux/git-hooks/pre-commit
+++ b/build-aux/git-hooks/pre-commit
@@ -25,16 +25,32 @@ LC_ALL=
. git-sh-setup
+# When doing a two-way merge, ignore problems that came from the other
+# side of the merge.
+head=HEAD
+if test -e "$GIT_DIR"/MERGE_HEAD; then
+ merge_heads=`cat "$GIT_DIR"/MERGE_HEAD` || exit
+ for merge_head in $merge_heads; do
+ case $head in
+ HEAD) head=$merge_head;;
+ # For multi-head merges, there's no easy way to ignore merged-in
+ # changes. But if you're doing multi-head merges, presumably
+ # you know how to handle any ensuing problems.
+ *) head=HEAD; break;;
+ esac
+ done
+fi
+
git_diff='git diff --cached --name-only --diff-filter=A'
ok_chars='\0+[=-=]./0-9A-Z_a-z'
-nbadchars=`$git_diff -z HEAD | tr -d "$ok_chars" | wc -c`
+nbadchars=`$git_diff -z $head | tr -d "$ok_chars" | wc -c`
if test "$nbadchars" -ne 0; then
echo "File name does not consist of -+./_ or ASCII letters or digits."
exit 1
fi
-for new_name in `$git_diff HEAD`; do
+for new_name in `$git_diff $head`; do
case $new_name in
-* | */-*)
echo "$new_name: File name component begins with '-'."
@@ -53,4 +69,4 @@ nbadchars=
# tests so that trailing spaces are generated on the fly rather than
# being committed as source.
-exec git diff-index --check --cached HEAD --
+exec git diff-index --check --cached $head --
--
2.7.4
next prev parent reply other threads:[~2017-04-29 18:44 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-11 16:25 git pre-commit hook for merges (WAS: master has switched from Automake to GNU Make) Noam Postavsky
2017-04-12 9:30 ` martin rudalics
2017-04-12 18:26 ` Paul Eggert
2017-04-13 0:13 ` Noam Postavsky
2017-04-13 1:49 ` Paul Eggert
2017-04-13 2:05 ` Noam Postavsky
2017-04-13 6:11 ` Paul Eggert
2017-04-13 20:04 ` Noam Postavsky
2017-04-29 18:00 ` Noam Postavsky
2017-04-29 18:44 ` Paul Eggert [this message]
2017-04-29 19:15 ` Eli Zaretskii
2017-04-29 19:54 ` Noam Postavsky
2017-04-29 20:04 ` Eli Zaretskii
2017-04-29 23:25 ` Noam Postavsky
2017-04-30 2:34 ` Eli Zaretskii
2017-04-30 19:35 ` Noam Postavsky
2017-04-30 19:40 ` Eli Zaretskii
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=a4de4a86-5933-dade-9b86-3166ab043adf@cs.ucla.edu \
--to=eggert@cs.ucla.edu \
--cc=emacs-devel@gnu.org \
--cc=npostavs@users.sourceforge.net \
--cc=rudalics@gmx.at \
--cc=schwab@suse.de \
--cc=yuri.v.khan@gmail.com \
/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.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.