aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gitolite-cgit/Dockerfile2
-rw-r--r--gitolite-cgit/auto-default-branch.sh29
-rw-r--r--gitolite-cgit/gitolite.rc5
3 files changed, 36 insertions, 0 deletions
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',
+ ],
+
);
# ------------------------------------------------------------------------------