annotate config/dmenu/.git/hooks/commit-msg.sample @ 4:7c8c5e548075 default tip

fix stuff
author Yasuri <yasuri@charliesmp.net>
date Sat, 03 Oct 2026 19:23:53 -0500
parents face7f4d84f7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
1 #!/nix/store/svx59425zxp552p2b8gm11qj5r09b56i-bash-5.3p15/bin/bash
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
2 #
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
3 # An example hook script to check the commit log message.
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
4 # Called by "git commit" with one argument, the name of the file
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
5 # that has the commit message. The hook should exit with non-zero
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
6 # status after issuing an appropriate message if it wants to stop the
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
7 # commit. The hook is allowed to edit the commit message file.
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
8 #
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
9 # To enable this hook, rename this file to "commit-msg".
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
10
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
11 # Uncomment the below to add a Signed-off-by line to the message.
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
12 # Doing this in a hook is a bad idea in general, but the prepare-commit-msg
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
13 # hook is more suited to it.
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
14 #
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
15 # SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
16 # grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
17
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
18 # This example catches duplicate Signed-off-by lines and messages that
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
19 # would confuse 'git am'.
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
20
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
21 ret=0
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
22
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
23 test "" = "$(grep '^Signed-off-by: ' "$1" |
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
24 sort | uniq -c | sed -e '/^[ ]*1[ ]/d')" || {
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
25 echo >&2 Duplicate Signed-off-by lines.
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
26 ret=1
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
27 }
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
28
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
29 comment_re="$(
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
30 {
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
31 git config --get-regexp "^core\.comment(char|string)\$" ||
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
32 echo '#'
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
33 } | sed -n -e '
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
34 ${
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
35 s/^[^ ]* //
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
36 s|[][*./\]|\\&|g
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
37 s/^auto$/[#;@!$%^&|:]/
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
38 p
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
39 }'
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
40 )"
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
41 scissors_line="^${comment_re} -\{8,\} >8 -\{8,\}\$"
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
42 comment_line="^${comment_re}.*"
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
43 blank_line='^[ ]*$'
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
44 # Disallow lines starting with "diff -" or "Index: " in the body of the
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
45 # message. Stop looking if we see a scissors line.
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
46 line="$(sed -n -e "
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
47 # Skip comments and blank lines at the start of the file.
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
48 /${scissors_line}/q
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
49 /${comment_line}/d
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
50 /${blank_line}/d
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
51 # The first paragraph will become the subject header so
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
52 # does not need to be checked.
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
53 : subject
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
54 n
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
55 /${scissors_line}/q
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
56 /${blank_line}/!b subject
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
57 # Check the body of the message for problematic
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
58 # prefixes.
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
59 : body
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
60 n
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
61 /${scissors_line}/q
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
62 /${comment_line}/b body
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
63 /^diff -/{p;q;}
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
64 /^Index: /{p;q;}
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
65 b body
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
66 " "$1")"
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
67 if test -n "$line"
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
68 then
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
69 echo >&2 "Message contains a diff that will confuse 'git am'."
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
70 echo >&2 "To fix this indent the diff."
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
71 ret=1
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
72 fi
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
73
face7f4d84f7 Initial commit
Yasuri <yasuri@charliesmp.net>
parents:
diff changeset
74 exit $ret