summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Sima <ben@bsima.me>2024-04-04 06:30:29 -0400
committerBen Sima <ben@bsima.me>2024-04-10 09:48:58 -0400
commit051973aba8953ebde51eb1436fb3994e7ae699dc (patch)
treecabdc3ce664ea71e30ee0d564d52bb6541a064f2
parent383b375a13ffdfd42547747b4e1a5fd165c28f48 (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--.envrc2
-rwxr-xr-xBiz/Ide/hooks/pre-push20
2 files changed, 21 insertions, 1 deletions
diff --git a/.envrc b/.envrc
index 4fcbff9..717b333 100644
--- a/.envrc
+++ b/.envrc
@@ -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