On 2020-05-05 20:56:58-0700, Junio C Hamano <gitster@xxxxxxxxx> wrote: > Đoàn Trần Công Danh <congdanhqx@xxxxxxxxx> writes: > > +-------------- > > +$ git checkout --orphan ci-config > > +$ cp contrib/ci-config-allow-ref allow-ref > > +$ $EDITOR allow-ref > > +$ git rm -rf . > > This sounds horrible. You just nuked the entire files in the > working tree you use for your everyday Git hacking to edit a > single file. It isn't that horrible as it sounds. It only removes the files that are currently added in index, which is the same with tracked files in old branch, and we can get it back by switching back to old branch. I decided to make an orphanage branch because I would like to save time and network bandwidth for the "check-ci" jobs. Since GitHub will fetch only single branch in GitHub Actions: /usr/bin/git -c protocol.version=2 fetch --no-tags --prune --progress --no-recurse-submodules --depth=1 origin +refs/ci/config:refs/ci/config I wonder whether the "git rm -rf ." makes that block sounds horrible? If that is the case, we can use the experimental git-switch(1) instead, it's doing more-or-less the same (or is it the same?) with "git checkout --orphan" and "git rm -rf ." ----------------- $ cp contrib/ci-config-allow-ref.sample allow-ref $ git switch --orphan ci-config $ edit allow-ref $ git add allow-ref $ git commit ----------------- Note: I changed `$EDITOR` to `edit` to match other example of `edit`. > As the instruction above says, we should set the example and > describe the behaviour we implemented initially. Something as basic > like ... > > # Build any branch other than those whose name begins with "no-ci" That's definitely better. And I think we should add `.sample` suffix to this file, too If all of that's sensible enough, here is the replacement fix-up patch. --------------------8<------------------ Subject: [PATCH] fixup! ci: allow per-branch config for GitHub Actions Signed-off-by: Đoàn Trần Công Danh <congdanhqx@xxxxxxxxx> --- .github/workflows/main.yml | 3 +-- Documentation/SubmittingPatches | 12 ++++++++++++ contrib/ci-config-allow-ref.sample | 12 ++++++++++++ 3 files changed, 25 insertions(+), 2 deletions(-) create mode 100755 contrib/ci-config-allow-ref.sample diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 51f4ff6e89..08217c5ed8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -19,8 +19,7 @@ jobs: name: check whether CI is enabled for ref run: | enabled=yes - if test -e ref-whitelist && - ! grep '^${{ github.ref }}$' ref-whitelist + if test -x allow-ref && ! ./allow-ref '${{ github.ref }}' then enabled=no fi diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches index b916f07f2c..bf06284f29 100644 --- a/Documentation/SubmittingPatches +++ b/Documentation/SubmittingPatches @@ -82,6 +82,18 @@ Alternately, you can use GitHub Actions (which supports testing your changes on Linux, macOS, and Windows) by pushing into a branch in your fork or opening a GitHub Pull Request against https://github.com/git/git.git or a fork of that repository. +In the event that you only want to trigger GitHub Actions for specific +refname, you can create an executable file named `allow-ref` in +`refs/ci/config`. The following steps may help you: +-------------- +$ cp contrib/ci-config-allow-ref.sample allow-ref +$ git switch --orphan <a-branch-name-of-your-choice> +$ edit allow-ref +$ git add allow-ref +$ git commit allow-ref +$ git push <your-fork> HEAD:refs/ci/config +-------------- + Do not forget to update the documentation to describe the updated behavior and make sure that the resulting documentation set formats diff --git a/contrib/ci-config-allow-ref.sample b/contrib/ci-config-allow-ref.sample new file mode 100755 index 0000000000..1973e88912 --- /dev/null +++ b/contrib/ci-config-allow-ref.sample @@ -0,0 +1,12 @@ +#!/bin/sh +# Sample filter for GitHub Actions +# GitHub Actions will run if and only if this script exits with zero status + +# This sample filter will ask GitHub Actions to build +# any branches whose name doesn't start with "no-ci" + +REFNAME="$1" + +case "$REFNAME" in +refs/heads/no-ci*) exit 1 ;; +esac -- 2.26.2.672.g232c24e857