From 051973aba8953ebde51eb1436fb3994e7ae699dc Mon Sep 17 00:00:00 2001 From: Ben Sima Date: Thu, 4 Apr 2024 06:30:29 -0400 Subject: 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. --- .envrc | 2 ++ Biz/Ide/hooks/pre-push | 20 +++++++++++++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) 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 -- cgit v1.2.3