From 1e6f82e10d587b4778ca0bc603e260213078b09b Mon Sep 17 00:00:00 2001 From: Jesus E Date: Mon, 3 Jul 2023 16:23:00 -0400 Subject: Add auto-default-branch --- gitolite-cgit/Dockerfile | 2 ++ gitolite-cgit/auto-default-branch.sh | 29 +++++++++++++++++++++++++++++ gitolite-cgit/gitolite.rc | 5 +++++ 3 files changed, 36 insertions(+) create mode 100644 gitolite-cgit/auto-default-branch.sh diff --git a/gitolite-cgit/Dockerfile b/gitolite-cgit/Dockerfile index b64fee8..b9458a3 100644 --- a/gitolite-cgit/Dockerfile +++ b/gitolite-cgit/Dockerfile @@ -34,11 +34,13 @@ WORKDIR /var/lib/git COPY cgit.css /usr/share/webapps/cgit/cgit.css COPY md2html /usr/lib/cgit/filters/html-converters/md2html COPY syntax-highlighting.py /usr/lib/cgit/filters/syntax-highlighting.py +COPY auto-default-branch.sh /usr/lib/gitolite/triggers/auto-default-branch COPY gitolite.rc /var/lib/git/.gitolite.rc COPY entrypoint.sh / RUN chmod u+x /usr/lib/cgit/filters/html-converters/md2html RUN chmod u+x /usr/lib/cgit/filters/syntax-highlighting.py +RUN chmod a+x /usr/lib/gitolite/triggers/auto-default-branch RUN chmod u+x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"] diff --git a/gitolite-cgit/auto-default-branch.sh b/gitolite-cgit/auto-default-branch.sh new file mode 100644 index 0000000..d9c60a0 --- /dev/null +++ b/gitolite-cgit/auto-default-branch.sh @@ -0,0 +1,29 @@ +#!/bin/sh + +info() { printf >&2 %s\\n "$*" ; } + +die() { info "$*" ; exit 1 ; } + +ensure_HEAD() { + [ "$1" = 'POST_GIT' ] || die "unsupported trigger '$1'" + + cd "$GL_REPO_BASE/$2.git" + + # everything OK if the default in HEAD points to a real branch + git show-ref --quiet --verify "$(git symbolic-ref HEAD)" && return 0 + + # there *might* be a mismatch, so let's find out a real branch + local head + head="$(git show-ref --heads | head -1 | sed -e 's/^.* //')" + + # the repo might still be empty + [ -n "$head" ] || return 0 + + # we have a default branch that we can set here + info "setting HEAD to <$head>" + git symbolic-ref HEAD "$head" -m "Default HEAD to branch <$head>" +} + +set -eu + +ensure_HEAD "$@" diff --git a/gitolite-cgit/gitolite.rc b/gitolite-cgit/gitolite.rc index 0bc75ef..5d7f950 100644 --- a/gitolite-cgit/gitolite.rc +++ b/gitolite-cgit/gitolite.rc @@ -95,6 +95,7 @@ 'info', 'perms', 'writable', + 'symbolic-ref', # Uncomment or add new commands here. 'create', @@ -190,6 +191,10 @@ # 'Kindergarten', ], + POST_GIT => [ + 'auto-default-branch', + ], + ); # ------------------------------------------------------------------------------ -- cgit v1.2.3