#!/bin/sh -eu tool=$(readlink -e "${0%/*}/..") . "$tool"/local/lib.sh sudo debconf-set-selections <<-EOF gitolite gitolite/gituser string git gitolite gitolite/adminkey string gitolite gitolite/gitdir string /home/git EOF "$tool"/local/apt-get-install gitolite "$tool"/local/adduser git \ --disabled-password \ --group \ --home /home/git \ --shell /bin/bash \ --system sudo chfn --full-name git git "$tool"/local/adduser log-git \ --disabled-login \ --disabled-password \ --group \ --home /home/git/log \ --shell /bin/false \ --system "$tool"/local/adduser git-data \ --disabled-login \ --disabled-password \ --group \ --home /home/git/data \ --shell /bin/false \ --system sudo adduser git git-data sudo install -d -m 750 -o git -g git \ /etc/gitolite \ /home/git/etc \ /home/git/etc/ssh sudo install -d -m 751 -o git -g git \ /home/git sudo install -d -m 2770 -o git-data -g git-data \ /home/git/data sudo install -d -m 1771 -o git -g git \ /home/git/log sudo install -d -m 2770 -o git -g log-git \ /home/git/log/gitolite \ /home/git/log/gitolite/perf sudo install -d -m 3771 -o git -g git \ /home/git/hooks sudo ln -fns /etc/gitolite /home/git/etc/gitolite sudo ln -fns /etc/gitweb /home/git/etc/gitweb sudo ln -fns etc/gitolite/gitolite.rc /home/git/.gitolite.rc sudo ln -fns etc/ssh /home/git/.ssh sudo install -m 770 -o git -g git /dev/stdin \ /home/git/etc/gitolite/gitolite.rc <<-EOF #\$ADMIN_POST_UPDATE_CHAINS_TO = "hooks/post-update.secondary"; #\$BIG_INFO_CAP = 20; #\$ENV{GL_SLAVES} = 'gitolite@server2 gitolite@server3'; # NOTE: Please use single quotes, not double quotes. #\$GITWEB_URI_ESCAPE = 0; \$GIT_PATH = ""; #\$GL_ADC_PATH = ""; \$GL_ADMINDIR = \$ENV{HOME} . "/etc/gitolite"; #\$GL_ALL_INCLUDES_SPECIAL = 0; #\$GL_ALL_READ_ALL = 0; \$GL_BIG_CONFIG = 0; \$GL_CONF = "\$GL_ADMINDIR/conf/gitolite.conf"; \$GL_CONF_COMPILED = "\$GL_ADMINDIR/conf/gitolite.conf.pm"; #\$GL_GET_MEMBERSHIPS_PGM = "/usr/local/bin/expand-ldap-user-to-groups" \$GL_GITCONFIG_KEYS = "gitweb\\..* hooks\\..*"; #\$GL_HOSTNAME = "git.$local_domainname"; # NOTE: read doc/mirroring.mkd COMPLETELY before setting this. #\$GL_HTTP_ANON_USER = "mob"; \$GL_KEYDIR = "\$GL_ADMINDIR/keydir"; \$GL_LOGT = \$ENV{HOME} . "/log/gitolite/%y-%m-%d.log"; #\$GL_NICE_VALUE = 0; \$GL_NO_CREATE_REPOS = 0; \$GL_NO_DAEMON_NO_GITWEB = 0; \$GL_NO_SETUP_AUTHKEYS = 0; \$GL_PACKAGE_CONF = "/usr/share/gitolite/conf"; \$GL_PACKAGE_HOOKS = "/usr/share/gitolite/hooks"; #\$GL_PERFLOGT = \$ENV{HOME} . "/log/gitolite/perf/%y-%m-%d.log"; #\$GL_REF_OR_FILENAME_PATT = qr(^[0-9a-zA-Z][0-9a-zA-Z._\\@/+ :,-]*\$); \$GL_SITE_INFO = "git.$local_domainname"; #\$GL_SLAVE_MODE = 0; \$GL_WILDREPOS = 0; #\$GL_WILDREPOS_DEFPERMS = 'R @all'; \$GL_WILDREPOS_PERM_CATS = "READERS WRITERS"; \$HTPASSWD_FILE = ""; \$PROJECTS_LIST = \$ENV{HOME} . "/etc/gitweb/projects.list"; \$REPO_BASE = "data"; \$REPO_UMASK = 0007; \$RSYNC_BASE = ""; \$SVNSERVE = ""; #\$UPDATE_CHAINS_TO = "hooks/update.secondary"; \$WEB_INTERFACE = "gitweb"; 1; EOF sudo install -m 600 -o git -g git \ "$tool"/var/pub/ssh/git.key \ /home/git/etc/ssh/git.pub sudo -u git \ GL_RC=/home/git/etc/gitolite/gitolite.rc \ GIT_AUTHOR_NAME=git \ gl-setup -q /home/git/etc/ssh/git.pub git for d in doc logs src do test ! -d /home/git/etc/gitolite/"$d" || rmdir /home/git/etc/gitolite/"$d" done