postinst is in gitolite3 3.6.4-1.
This file is a maintainer script. It is executed when installing (*inst) or removing (*rm) the package.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 | #!/bin/sh
# postinst script for gitolite
# Copyright 2010-2011 by Gerfried Fuchs <rhonda@debian.org>
# Licenced under WTFPLv2
set -e
# summary of how this script can be called:
# * <postinst> `configure' <most-recently-configured-version>
# * <old-postinst> `abort-upgrade' <new version>
# * <conflictor's-postinst> `abort-remove' `in-favour' <package>
# <new-version>
# * <postinst> `abort-remove'
# * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
# <failed-install-package> <version> `removing'
# <conflicting-package> <version>
# for details, see http://www.debian.org/doc/debian-policy/ or
# the debian-policy package
pkg=gitolite3
etcdir=/etc/$pkg
relink_rc () {
cd $1
mv .gitolite.rc $etcdir/gitolite.rc
chown root:root $etcdir/gitolite.rc
chmod 0644 $etcdir/gitolite.rc
ln -s $etcdir/gitolite.rc .gitolite.rc
}
# Source debconf library.
if [ -e /usr/share/debconf/confmodule ]; then
. /usr/share/debconf/confmodule
fi
action=$1
version=$2
if [ "${DEBCONF_RECONFIGURE}" = "1" ]; then
# workaround until reconfigure is really available
action=reconfigure
fi
if [ "$action" = "configure" ]; then
db_get $pkg/gitdir
GITDIR="${RET:-/var/lib/$pkg}"
# tighten permissions when initial instalation was pre-3.5.3.1.
repos="$GITDIR/repositories"
if [ -d "$repos" ]; then
# lack of recursion here is intentional; we don't know what the user may have
# set up underneath. We also leave the x permission to allow existing
# projects.list based gitweb installations to (hopefully) continue working.
chmod go-r "$repos"
for subdir in gitolite-admin.git testing.git; do
if [ -d $subdir ]; then
chmod -R og-rx "$repos/$subdir"
fi
done
fi
db_get $pkg/gitdir
GITDIR="${RET:-/var/lib/$pkg}"
oldrc="$GITDIR/.gitolite.rc"
# migrate existing config file to /etc
if [ -f "${oldrc}" -a ! -L "${oldrc}" ]; then
relink_rc "$GITDIR"
fi
fi
# only on new install or reconfigure
if [ "x$version" = "x" ] || [ "$action" = "reconfigure" ]; then
# we only attempt to configure once, even if using reconfigure
if [ -f $etcdir/gitolite.rc ]; then
echo "gitolite configuration already exists in $etcdir, doing nothing." 1>&2
exit 0
fi
db_get $pkg/gituser
GITUSER="${RET:-$pkg}"
db_get $pkg/gitdir
GITDIR="${RET:-/var/lib/$pkg}"
db_get $pkg/adminkey
ADMINKEY="$RET"
# set it back to empty after use
db_set $pkg/adminkey ""
# all this makes only sense when we have been given an admin key
# to initialize with
if [ -n "$ADMINKEY" ]; then
if ! getent passwd "$GITUSER" >/dev/null; then
adduser --quiet --system --home "$GITDIR" --shell /bin/bash \
--no-create-home --gecos 'git repository hosting' \
--group "$GITUSER"
fi
if [ ! -r "$GITDIR/.gitolite.rc" ]; then
if [ ! -d "$GITDIR" ]; then
mkdir -p "$GITDIR"
chown "$GITUSER":"$GITUSER" "$GITDIR"
fi
# create admin repository
tmpdir="$(mktemp -d)"
if [ -r "$ADMINKEY" ]; then
# key file
cat "$ADMINKEY" > "$tmpdir/admin.pub"
else
# possibly pasted key
echo "$ADMINKEY" > "$tmpdir/admin.pub"
fi
chown -R "$GITUSER" "$tmpdir"
su - $GITUSER -c "gitolite setup -pk '$tmpdir/admin.pub'"
rm -r "$tmpdir"
relink_rc "$GITDIR"
else
echo "gitolite seems to be already set up in $GITDIR, doing nothing." 1>&2
fi
else
echo "No adminkey given - not setting up gitolite. Do a dpkg-reconfigure to setup." 1>&2
fi
fi
exit 0
|