emacs-devel
[Top][All Lists]
Advanced

[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" --



reply via email to

[Prev in Thread] Current Thread [Next in Thread]