Modification : vm_{host,hosted,remote} -> {host,local,remote}/ .
[lhc/ateliers.git] / local / gitolite-configure
diff --git a/local/gitolite-configure b/local/gitolite-configure
new file mode 100755 (executable)
index 0000000..0be27e6
--- /dev/null
@@ -0,0 +1,107 @@
+#!/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/pub \
+ --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/pub
+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.$vm_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.$vm_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 = "pub";
+       \$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