[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
git pre-commit hook for merges (WAS: master has switched from Automake t
From: |
Noam Postavsky |
Subject: |
git pre-commit hook for merges (WAS: master has switched from Automake to GNU Make) |
Date: |
Tue, 11 Apr 2017 12:25:36 -0400 |
On Tue, Apr 11, 2017 at 11:13 AM, Yuri Khan <address@hidden> wrote:
>> I always want a merge. So what do you recommend? In particular what do
>> you recommend when there are conflicts? IIUC in that case git does not
>> merge anything but waits till I have resolved the conflicts and tells me
>> to commit them when I'm done. If, at that moment, I do commit I'm in
>> the same situation with SpecialCasing.txt as before. Or is there any
>> difference?
>
> Well, I would recommend rebasing, which would solve the
> SpecialCasing.txt problem because your rebased branch would start
> after the problematic file has been committed.
>
> But if you insist on merging, it’s doable, too. Then I guess you
> get a merge conflict,
> resolve it,
> stage the resolved files,
> attempt to commit,
> get a whitespace policy violation,
> say an expletive of your choice,
> see that the violation was not your doing,
> optionally confirm that by looking at the history of the problematic
> file in the branch you’re merging,
> then say “Oh well” and commit bypassing the check.
Perhaps we should change the hook so that it doesn't complain about
problems from merges?
--- i/build-aux/git-hooks/pre-commit
+++ w/build-aux/git-hooks/pre-commit
@@ -25,16 +25,23 @@ LC_ALL=
. git-sh-setup
+# If we're merging, don't flag problems that came from the other side
+# of the merge.
+head=HEAD
+if [ -f "$GIT_DIR"/MERGE_HEAD ] ; then
+ head=$(cat "$GIT_DIR"/MERGE_HEAD)
+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 +60,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" --
- git pre-commit hook for merges (WAS: master has switched from Automake to GNU Make),
Noam Postavsky <=
Re: git pre-commit hook for merges (WAS: master has switched from Automake to GNU Make), Noam Postavsky, 2017/04/29