Re: [PATCH v2 1/2] CI: limit GitHub Actions to designated branches
- From
Jeff King <peff@peff.net>
- Date
- May 7, 2020, 12:25 UTC
- Message-ID
- <20200507122549.GB3057274@coredump.intra.peff.net>
- In-Reply-To
- <xmqqa72l81pe.fsf@gitster.c.googlers.com>
On Wed, May 06, 2020 at 09:31:25AM -0700, Junio C Hamano wrote:
Show 28 quoted lines
> Đoàn Trần Công Danh <congdanhqx@gmail.com> writes: > > > On 2020-05-05 20:56:58-0700, Junio C Hamano <gitster@pobox.com> wrote: > >> Đoàn Trần Công Danh <congdanhqx@gmail.com> 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. > > I didn't say it is wrong to record a tree with a single file > (allow-ref) in a commit that is pointed by the ci-config ref. > > I would have expected you to create such a commit in an otherwise > empty repository, and push into your fork of Git at GitHub. That > way, you won't have to checkout and/or refresh the index all of the > 3800+ files.
Yeah, I agree that all of the mechanisms for dealing with the unrelated history are somewhat awkward. Another issue is that you can't just:
git clone --single-branch -b refs/ci/config my-config
to work on it, because "-b" wants only heads or tags (we could address that by putting it in refs/heads/ci-config or similar).
If we do go the javascript route, perhaps it would make sense for refs/ci/config to be a single blob containing a snippet of javascript with several functions. And then we could just eval() that and call the appropriate functions (if defined).
Then a sample can live in the main repo with something like:
# This file contains functions which will be run by the GitHub # Actions CI script. # # You may customize it for your own fork by modifying it on any branch # you like, and installing with: # # git push <remote> $(git rev-parse HEAD:ci/config):refs/ci/config # # [allow_ref() sample definition and documentation....]
That sidesteps most of those issues.
-Peff