diff options
author | Ben Sima <ben@bsima.me> | 2024-04-04 06:30:29 -0400 |
---|---|---|
committer | Ben Sima <ben@bsima.me> | 2024-04-10 09:48:58 -0400 |
commit | 051973aba8953ebde51eb1436fb3994e7ae699dc (patch) | |
tree | cabdc3ce664ea71e30ee0d564d52bb6541a064f2 | |
parent | 383b375a13ffdfd42547747b4e1a5fd165c28f48 (diff) |
Push ci notes automatically
I always want to push notes on a successful code push, so using the pre-push
hook to do so is perfect. This also expands the pre-push hook to handle
new/deleted branches, configures notes automatically, and finally checks that
commit messages are decent with gitlint, since `git amend` can bypass the git
commit-msg hook.
-rw-r--r-- | .envrc | 2 | ||||
-rwxr-xr-x | Biz/Ide/hooks/pre-push | 20 |
2 files changed, 21 insertions, 1 deletions
@@ -37,6 +37,8 @@ # # configure git git config --local core.hooksPath "$CODEROOT/Biz/Ide/hooks" + git config --local notes.displayRef refs/notes/ci + git config --local remotes.origin.fetch +refs/notes/*:refs/notes/* notes git config --local branchless.test.strategy worktree git config --local branchless.test.alias.default 'git clean -ffdx; eval $(direnv export bash); bild --test **/*' git config --local branchless.test.alias.bild 'git clean -ffdx; eval $(direnv export bash); bild **/*' diff --git a/Biz/Ide/hooks/pre-push b/Biz/Ide/hooks/pre-push index 1a47699..30b4e3a 100755 --- a/Biz/Ide/hooks/pre-push +++ b/Biz/Ide/hooks/pre-push @@ -1,2 +1,20 @@ #!/usr/bin/env bash -git test run --command ci origin/live..HEAD --no-cache --jobs 5 +remote="$1" +z40=0000000000000000000000000000000000000000 +IFS=" " +while read local_ref local_sha remote_ref remote_sha +do + if [ "$local_sha" = $z40 ] + then + # delete, do nothing + elif [ "$remote_sha" = $z40 ] + then + # new branch, test all commits since ci was implemented + range="11d95581fb178a5d21e88dfd8030a61886cc2519..$local_sha" + else + range="$remote_sha..$local_sha" + fi +done +gitlint --commits "$range" lint +git test run --command ci "$range" +git push "$remote" refs/notes/ci |