diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | IDEAS.md | 5 | ||||
-rw-r--r-- | Makefile | 5 | ||||
-rw-r--r-- | VERSION | 4 | ||||
-rw-r--r-- | git/template/hooks/post-update.sh | 7 | ||||
-rwxr-xr-x | git/template/hooks/prepare-commit-msg.awk | 45 | ||||
m--------- | vim/bundle/big_file_options | 0 | ||||
-rw-r--r-- | vim/scripts.vim | 18 |
8 files changed, 72 insertions, 13 deletions
@@ -170,6 +170,7 @@ /games/zs /git/gitconfig /git/gitconfig.m4 +/git/template/hooks/prepare-commit-msg /git/template/hooks/post-update /gnupg/gpg.conf /gnupg/gpg.conf.m4 @@ -32,3 +32,8 @@ Ideas * Write a ftplugin for Perl to switch between punctuation variable names and English variable names., i.e. \e on `$?` would change to `$CHILD_ERROR`, and vice-versa. +* Could probably put my pre-commit hook that bans commits to master in here; + maybe make it a bit smarter by only banning commits to master if a branch + named "develop" exists +* Almost definitely going to want to try a runparts layout for Git hooks at + some point @@ -263,7 +263,8 @@ GAMES = games/aaf \ games/xyzzy \ games/zs -GIT_TEMPLATE_HOOKS = git/template/hooks/post-update +GIT_TEMPLATE_HOOKS = git/template/hooks/post-update \ + git/template/hooks/prepare-commit-msg all: $(BINS) git/gitconfig $(GIT_TEMPLATE_HOOKS) gnupg/gpg.conf @@ -425,7 +426,7 @@ install-git: git/gitconfig $(GIT_TEMPLATE_HOOKS) -type d -exec sh -c 'mkdir -p -- \ $(HOME)/.git-template"$${1#git/template}"' \ _ {} \; \ - -o ! -name '*.sh' -exec sh -c 'cp -p -- "$$1" \ + -o ! -name '*.*' -exec sh -c 'cp -p -- "$$1" \ $(HOME)/.git-template"$${1#git/template}"' \ _ {} \; @@ -1,2 +1,2 @@ -tejr dotfiles v5.6.0 -Wed May 29 04:20:42 UTC 2019 +tejr dotfiles v5.7.0 +Wed May 29 18:15:54 NZST 2019 diff --git a/git/template/hooks/post-update.sh b/git/template/hooks/post-update.sh index 7199a513..232c0ecd 100644 --- a/git/template/hooks/post-update.sh +++ b/git/template/hooks/post-update.sh @@ -1,4 +1,11 @@ +# Update server info automatically if this is a bare repository + +# Get whether this is bare from git-config(1); this returns the strings 'true' +# or 'false'; I don't think you can coerce the exit value instead, which would +# have been nice bare=$(git config core.bare) + +# If it's 'true', update the server info so that this works via cgit or Gitweb case $bare in true) git update-server-info ;; esac diff --git a/git/template/hooks/prepare-commit-msg.awk b/git/template/hooks/prepare-commit-msg.awk new file mode 100755 index 00000000..2fe43c5b --- /dev/null +++ b/git/template/hooks/prepare-commit-msg.awk @@ -0,0 +1,45 @@ +# Filter to clean up a merge commit; still experimental on tejr's part. + +# If the second argument to this script is "merge", this is a merge commit, and +# we know we need to filter it; otherwise we can just bail out directly +BEGIN { + if (ARGV[2] != "merge") + exit(0) + message = ARGV[1] + ARGC = 2 +} + +# This line starts with an asterisk, so we're starting the commit listings for +# a new branch; save the whole line into a variable and skip to the next line +/^\* / { + branch = $0 + next +} + +# Commit message subject patterns to skip go here; be as precise as you can +$0 == " Bump VERSION" { next } # Skip version number bumps + +# This line is blank, or a comment; reset the branch +!NF || $1 ~ /^#/ { branch = 0 } + +# Don't emit consecutive blanks +NF { blank = 0 } +!NF && blank++ { next } + +# If we got past this point, we have an actual commit line to include, so if +# there's a branch heading yet to print, we should do so now; add it to the +# line buffer +branch { + lines[++l] = branch + branch = 0 +} + +# Add the current line to the line buffer +{ lines[++l] = $0 } + +# If we set the message filename in BEGIN due to this being a merge commit, +# write our filtered message back to that file, and we're done +END { + for (i = 1; message && i <= l; i++) + print lines[i] > message +} diff --git a/vim/bundle/big_file_options b/vim/bundle/big_file_options -Subproject b7fa83df2c41e795b4c704f0ba3a77c6cbccd97 +Subproject 4aa756a6545e5646926c82fb9982253455b02d4 diff --git a/vim/scripts.vim b/vim/scripts.vim index b69b89f5..31b980f2 100644 --- a/vim/scripts.vim +++ b/vim/scripts.vim @@ -11,7 +11,7 @@ if s:line !~# '^#!' endif " AWK -if s:line =~# '\<[gm]\=awk\>' +if s:line =~# '\<[gm]\=awk\d*\>' setfiletype awk " Perl 5 @@ -23,28 +23,28 @@ elseif s:line =~# '\<perl6\>' setfiletype perl6 " PHP -elseif s:line =~# '\<php\>' +elseif s:line =~# '\<php\d*\>' setfiletype php " Python -elseif s:line =~# '\<python[23]\=\>' +elseif s:line =~# '\<python\d*\>' setfiletype python " Ruby -elseif s:line =~# '\<ruby[23]\=\>' +elseif s:line =~# '\<ruby\d*\>' setfiletype ruby " sed -elseif s:line =~# '\<sed\>' +elseif s:line =~# '\<sed\d*\>' setfiletype sed " Bash -elseif s:line =~# '\<bash\>' +elseif s:line =~# '\<bash\d*\>' let b:is_bash = 1 setfiletype sh -" Korn shell -elseif s:line =~# '\<\%(\ksh\|ksh93\|mksh\|pdksh\)\>' +" Korn shell; either starts or ends in 'ksh' +elseif s:line =~# '\<ksh\|ksh\d*\>' let b:is_kornshell = 1 setfiletype sh @@ -54,7 +54,7 @@ elseif s:line =~# '\<sh\>' setfiletype sh " TCL -elseif s:line =~# '\<\%(expect\|tcl\|wish\)\>' +elseif s:line =~# '\<\%(expect\|tcl\|wish\)\d*\>' setfiletype tcl endif |