about summary refs log tree commit diff stats
path: root/tools/conf/srv/gitolite
diff options
context:
space:
mode:
Diffstat (limited to 'tools/conf/srv/gitolite')
-rw-r--r--tools/conf/srv/gitolite/cgitrc79
-rwxr-xr-xtools/conf/srv/gitolite/deploy-web (renamed from tools/conf/srv/gitolite/deploy-web-doc)17
-rw-r--r--tools/conf/srv/gitolite/deploy-web.sh14
-rwxr-xr-xtools/conf/srv/gitolite/deploy.sh210
-rw-r--r--tools/conf/srv/gitolite/hook.sh14
-rw-r--r--tools/conf/srv/gitolite/linux.gitweb.gitolite.rc (renamed from tools/conf/srv/gitolite/.gitolite.rc)0
-rw-r--r--tools/conf/srv/gitolite/openbsd.cgit.gitolite.rc204
7 files changed, 416 insertions, 122 deletions
diff --git a/tools/conf/srv/gitolite/cgitrc b/tools/conf/srv/gitolite/cgitrc
new file mode 100644
index 0000000..abd2437
--- /dev/null
+++ b/tools/conf/srv/gitolite/cgitrc
@@ -0,0 +1,79 @@
+##footer=/conf/cgit.footer
+#
+## Enable caching of up to 1000 output entries
+#cache-size=1000
+#
+#cache-root=/cgit/cache
+#
+## Specify some default clone urls using macro expansion
+##clone-url=git://git.codemadness.nl/$CGIT_REPO_URL
+#
+## Specify the css url
+##css=/cgit.css
+#
+## Show owner on index page
+#enable-index-owner=0
+#
+## Allow http transport git clone
+#enable-http-clone=0
+#
+## Show extra links for each repository on the index page
+#enable-index-links=0
+#
+## Enable ASCII art commit history graph on the log pages
+#enable-commit-graph=1
+#
+## Show number of affected files per commit on the log pages
+#enable-log-filecount=1
+#
+## Show number of added/removed lines per commit on the log pages
+#enable-log-linecount=1
+#
+## Sort branches by date
+#branch-sort=age
+#
+## Add a cgit favicon
+##favicon=/favicon.ico
+#
+## Enable statistics per week, month and quarter
+#max-stats=quarter
+#
+## Set the title and heading of the repository index page
+##root-title=Codemadness.org repositories
+#
+## Set a subheading for the repository index page
+##root-desc=
+#
+## Allow download of tar.gz, tar.bz2 and zip-files
+#snapshots=tar.gz
+#
+### List of common mimetypes
+#mimetype.gif=image/gif
+#mimetype.html=text/html
+#mimetype.jpg=image/jpeg
+#mimetype.jpeg=image/jpeg
+#mimetype.pdf=application/pdf
+#mimetype.png=image/png
+#mimetype.svg=image/svg+xml
+#
+### Search for these files in the root of the default branch of repositories
+### for coming up with the about page:
+#readme=:README
+#
+#virtual-root=/
+#
+#scan-path=/htdocs/src
+#
+## Disable adhoc downloads of this repo
+#repo.snapshots=0
+#
+## Disable line-counts for this repo
+#repo.enable-log-linecount=0
+#
+## Restrict the max statistics period for this repo
+#repo.max-stats=month
+enable-git-config=1
+enable-gitweb-owner=1
+#remove-suffix=1
+project-list=/projects.list
+scan-path=/repositories
diff --git a/tools/conf/srv/gitolite/deploy-web-doc b/tools/conf/srv/gitolite/deploy-web
index b836515..aa4a7fa 100755
--- a/tools/conf/srv/gitolite/deploy-web-doc
+++ b/tools/conf/srv/gitolite/deploy-web
@@ -1,28 +1,31 @@
-#!/bin/bash
+#!/bin/sh
+
 ######################################################################
 #
 # Put this file in your gitolite-admin;
-# ~/gitolite-admin/local/hooks/repo-specific/hook-deploy-web
+# ~/gitolite-admin/local/hooks/repo-specific/deploy-web
 #
 # set host to empty to create package for each push
 # or set remote host to create package based on last deployed push
 # host="https://doc.localhost"
 host=""
 # set name of witch branch should be deployed
-branch_to_deploy="deploy_branch"
+branch_to_deploy="master"
 
 ######################################################################
 
 
 url="$host/.last_deploy"
-source /srv/gitolite/deploy/hook.sh
+
+. /srv/gitolite/deploy/hook.sh
+
 read oldrev newrev refname
 push_branch=$(git rev-parse --symbolic --abbrev-ref $refname)
 
-#SCRIPT_VARS=$(set)
+SCRIPT_VARS=$(set)
 #echo "project: $PROJECT"
-#echo "local dir: $PWD" > /srv/gitolite/deploy/${GL_REPO}
-#echo "${SCRIPT_VARS}" >> /srv/gitolite/deploy/${GL_REPO}
+#echo "local dir: $PWD : /srv/gitolite/deploy/${GL_REPO}"
+#echo "${SCRIPT_VARS} : /srv/gitolite/deploy/${GL_REPO}"
 
 if [[ $push_branch = $branch_to_deploy  ]]; then
 
diff --git a/tools/conf/srv/gitolite/deploy-web.sh b/tools/conf/srv/gitolite/deploy-web.sh
index 86d2026..fcefa97 100644
--- a/tools/conf/srv/gitolite/deploy-web.sh
+++ b/tools/conf/srv/gitolite/deploy-web.sh
@@ -1,9 +1,9 @@
-#!/bin/bash
+#!/bin/sh
 
 pkg_path=$1
 
-www_root="/srv/www"
-www_user="www"
+www_root="/srv/www/htdocs"
+www_user="daemon"
 www_group="www"
 
 pkg_file="${pkg_path}/project"
@@ -31,11 +31,12 @@ fi
 # first backup all data
 if [[ ! $(ls ${pkg_www} | grep -v "backup_deploy") = "" ]]; then
     if [ ! -d ${pkg_back} ]; then
-        sudo -u ${www_user} mkdir -p ${pkg_back}
+    	mkdir -p ${pkg_back}
     fi
     backup_file="${pkg_back}/${pkg_name}-$(date '+%Y-%j-%H-%M-%S').tar.gz"
     echo "Deploy web: making backup ${backup_file}"
-    sudo -u ${www_user} tar --exclude ${pkg_back} --xattrs -zcpf ${backup_file} ${pkg_www}
+    tar --exclude ${pkg_back} --xattrs -zcpf ${backup_file} ${pkg_www}
+    chown -R ${www_user}:${www_group} ${pkg_back}
 fi
 
 # remove files and directories that have been deleted
@@ -65,7 +66,8 @@ fi
 # copy new files to destination
 if [ -d ${pkg_files} ]; then
     echo "Deploy web: cp from ${pkg_files} to ${pkg_www}"
-    sudo -u ${www_user} cp -r ${pkg_files}/* ${pkg_www}
+    cp -r ${pkg_files}/* ${pkg_www}
+    chown -R ${www_user}:${www_group} ${pkg_www} 
 fi
 
 echo ${pkg_new} > ${pkg_last}
diff --git a/tools/conf/srv/gitolite/deploy.sh b/tools/conf/srv/gitolite/deploy.sh
index 1091ea9..0c15798 100755
--- a/tools/conf/srv/gitolite/deploy.sh
+++ b/tools/conf/srv/gitolite/deploy.sh
@@ -1,37 +1,37 @@
-#!/bin/bash
+#!/bin/sh
 
 # origin package directory
 packages_dir="/srv/gitolite/deploy/packages"
 # temporary work directory
-deploy_dir="/srv/deploy_dir"
+deploy_dir="/srv/gitolite/deploy/deploy_dir"
 # scripts to deploy packages
 deploy_scripts="/srv/gitolite/deploy/scripts"
 
-function get_script(){
-    # receives package path return script to call
-    local pkg_path=$1
-    echo $(head -2 ${pkg_path}/project | tail -1)
+get_script(){
+	# receives package path return script to call
+	local pkg_path=$1
+	echo $(head -2 ${pkg_path}/project | tail -1)
 }
 
-function get_new(){
-    # receives package path return commit hash (new)
-    local pkg_path=$1
-    echo $(head -3 ${pkg_path}/project | tail -1)
+get_new(){
+	# receives package path return commit hash (new)
+	local pkg_path=$1
+	echo $(head -3 ${pkg_path}/project | tail -1)
 }
 
-function get_dep(){
-    # receives package path return previews commit hash (old)
-    local pkg_path=$1
+get_dep(){
+	# receives package path return previews commit hash (old)
+	local pkg_path=$1
 
-    new=$(head -3 ${pkg_path}/project | tail -1)
-    old=$(head -4 ${pkg_path}/project | tail -1)
+	new=$(head -3 ${pkg_path}/project | tail -1)
+	old=$(head -4 ${pkg_path}/project | tail -1)
 
-    if [[ ! ${new} = ${old} ]]; then
-        echo ${old} | cut -c1-7
-    fi
+	if [[ ! ${new} = ${old} ]]; then
+		echo ${old} | cut -c1-7
+	fi
 }
 
-function project_extract(){
+project_extract(){
 
     # project directory containing extracted packages
     local prj_dir=$1
@@ -50,55 +50,62 @@ function project_extract(){
     local y=0
 
     # array with all the news hashes
-    local pkg_news=($(ls ${prj_dir}))
+    #local pkg_news=($(ls ${prj_dir}))
+    local pkg_news=$(ls ${prj_dir})
 
     # total new packages
-    local total=${#pkg_news[@]}
+    local total=${#pkg_news[*]}
 
     echo "Deploy: $(basename ${prj_dir}) extracting packages ${pkg_news[*]}"
 
     # find first package
-    for pkg_new in ${pkg_news[@]}
+    for pkg_new in ${pkg_news[*]}
     do
-        # get package dependency
-        pkg_dir="${prj_dir}/${pkg_new}"
-        pkg_old=$(get_dep ${pkg_dir})
-        if [[ ! " ${pkg_news[@]} " =~ " ${pkg_old} " ]]; then
-            # pkg_news don't contain package
-            # we found initial package
-            pkg_temp=${pkg_news[0]}
-            pkg_news[0]=${pkg_new}
-            pkg_news[${x}]=${pkg_temp}
-            break
-        fi
-        x=$((${x}+1))
+	    # get package dependency
+	    pkg_dir="${prj_dir}/${pkg_new}"
+	    pkg_old=$(get_dep ${pkg_dir})
+	    #if [[ ! " $pkg_news[@] " =~ " ${pkg_old} " ]]; then
+	    if [[ `echo $pkg_news[@] | grep -c \'${pkg_old}\'` -eq 1 ]]; then 
+		    # pkg_news don't contain package
+		    # we found initial package
+		    pkg_temp=${pkg_news[0]}
+		    pkg_news[0]=${pkg_new}
+		    pkg_news[${x}]=${pkg_temp}
+		    break
+	    fi
+	    x=$((${x}+1))
     done
 
     # Order packages by dependency start with first package
-    for (( y=0; y<${total}; y++ ))
+    #for (( y=0; y<${total}; y++ ))
+    y=0
+    while [ $y -lt $total ]
     do
-        pkg_next=$(($y+1))
-        if [[ ${pkg_next} = ${total} ]]; then
-            ## we are in the last one
-            break
-        fi
-
-        pkg_new=${pkg_news[$y]}
-        for (( x=pkg_next; x<${total}; x++ ))
-        do
-            pkg_dir="${prj_dir}/${pkg_news[${x}]}"
-            pkg_old=$(get_dep ${pkg_dir})
-            # is dependent on current
-            if [[ ${pkg_old} = ${pkg_new} ]]; then
-                pkg_temp=${pkg_news[${pkg_next}]}
-                pkg_news[${pkg_next}]=${pkg_news[${x}]}
-                pkg_news[${x}]=${pkg_temp}
-                # we can break and pass next one
-                break
-            fi
-        done
+	    pkg_next=$(($y+1))
+	    if [[ ${pkg_next} = ${total} ]]; then
+		    ## we are in the last one
+		    break
+	    fi
+
+	    pkg_new=${pkg_news[$y]}
+	    #for (( x=pkg_next; x<${total}; x++ ))
+	    x=$pkg_next;
+	    while [ $x -lt $total ]
+	    do
+		    pkg_dir="${prj_dir}/${pkg_news[${x}]}"
+		    pkg_old=$(get_dep ${pkg_dir})
+		    # is dependent on current
+		    if [[ ${pkg_old} = ${pkg_new} ]]; then
+			    pkg_temp=${pkg_news[${pkg_next}]}
+			    pkg_news[${pkg_next}]=${pkg_news[${x}]}
+			    pkg_news[${x}]=${pkg_temp}
+			    # we can break and pass next one
+			    break
+		    fi
+		    x=$x+1
+	    done
+	    y=$y+1
     done
-
     # create project final package directory
     mkdir -p ${prj_pkg}/files
 
@@ -108,68 +115,67 @@ function project_extract(){
     # now that packages are ordered we can start creating files
     for pkg_new in ${pkg_news[@]}
     do
-        pkg_dir=${prj_dir}/${pkg_new}
-        tar xf ${pkg_dir}/files.tar.xz \
-            --directory ${prj_pkg}/files
-
-        # if deleted files exists
-        if [ -f "${pkg_dir}/deleted" ]; then
-            # first collect all files/directories don't exist
-            while read pkg_del; do
-                # if file don't exist add entry to project deleted file
-                pkg_temp="${prj_pkg}/files/${pkg_del}"
-                if [ ! -f ${pkg_temp} ]; then
-                    if [ ! -d ${pkg_temp} ]; then
-                        # is not a file or directory from previous packages
-                        echo ${pkg_del} >> ${prj_pkg}/deleted
-                    fi
-                fi
-            done <${prj_dir}/${pkg_new}/deleted
-
-            # delete directories and files
-            while read pkg_del; do
-                pkg_temp="${prj_pkg}/files/${pkg_del}"
-                if [ -d ${pkg_temp} ]; then
-                    rm -r ${pkg_temp}
-                elif [ -f ${pkg_temp} ]; then
-                    rm ${pkg_temp}
-                fi
-            done <${prj_dir}/${pkg_new}/deleted
-        fi
-
-        #remove temporary directory
-        rm -r ${prj_dir}/${pkg_new}
-    done
+	    pkg_dir=${prj_dir}/${pkg_new}
+	    tar -C ${prj_pkg}/files -xf ${pkg_dir}/files.tar.xz
+	    # if deleted files exists
+	    if [ -f "${pkg_dir}/deleted" ]; then
+		    # first collect all files/directories don't exist
+		    while read pkg_del; do
+			    # if file don't exist add entry to project deleted file
+			    pkg_temp="${prj_pkg}/files/${pkg_del}"
+			    if [ ! -f ${pkg_temp} ]; then
+				    if [ ! -d ${pkg_temp} ]; then
+					    # is not a file or directory from previous packages
+					    echo ${pkg_del} >> ${prj_pkg}/deleted
+				    fi
+			    fi
+		    done <${prj_dir}/${pkg_new}/deleted
+
+	    # delete directories and files
+	    while read pkg_del; do
+		    pkg_temp="${prj_pkg}/files/${pkg_del}"
+		    if [ -d ${pkg_temp} ]; then
+			    rm -r ${pkg_temp}
+		    elif [ -f ${pkg_temp} ]; then
+			    rm ${pkg_temp}
+		    fi
+	    done <${prj_dir}/${pkg_new}/deleted
+	    fi
+
+	#remove temporary directory
+	rm -r ${prj_dir}/${pkg_new}
+done
 
     # call project deploy script
     call_script=${deploy_scripts}/$(get_script $prj_pkg)
     echo "Deploy: calling deploy script: ${call_script}"
-    /bin/bash ${call_script} ${prj_pkg}
+    /bin/sh ${call_script} ${prj_pkg}
 
 }
 
 if [[ ! $(ls ${deploy_dir}) = "" ]]; then
-    rm -r ${deploy_dir}/*
+	echo "removing deploy dir"
+	rm -r ${deploy_dir}/*
 fi
 
 # first extract all packages from origin directory
 for pkg_path in `find ${packages_dir} -type f -name "*.tar.gz"`
 do
-    if [ -f ${pkg_path} ]; then
-        pkg_name=$(basename ${pkg_path})
-        pkg_proj=$(echo ${pkg_name} | cut -d "_" -f 1)
-        pkg_new7=$(echo ${pkg_name} | tail -c -15 | cut -c -7)
-        pkg_temp=${deploy_dir}/${pkg_proj}/${pkg_new7}
-        mkdir -p ${pkg_temp}
-        tar xf ${pkg_path} --directory ${pkg_temp}
-        rm ${pkg_path}
-    fi
+	if [ -f ${pkg_path} ]; then
+		pkg_name=$(basename ${pkg_path})
+		pkg_proj=$(echo ${pkg_name} | cut -d "_" -f 1)
+		pkg_new7=$(echo ${pkg_name} | tail -c -15 | cut -c -7)
+		pkg_temp=${deploy_dir}/${pkg_proj}/${pkg_new7}
+		mkdir -p ${pkg_temp}
+		tar -C ${pkg_temp} -zxf ${pkg_path} 
+		rm ${pkg_path}
+	fi
 done
 
 # loop for all projects and deploy them
 for prj_dir in `find ${deploy_dir} -maxdepth 1 -mindepth 1 -type d`
 do
-    # order index of hashes based on old commit
-    echo "prj_dir $prj_dir"
-    project_extract ${prj_dir}
+	# order index of hashes based on old commit
+	echo "Deploy: prj_dir=$prj_dir"
+	project_extract ${prj_dir}
 done
diff --git a/tools/conf/srv/gitolite/hook.sh b/tools/conf/srv/gitolite/hook.sh
index 1f977ca..be6a696 100644
--- a/tools/conf/srv/gitolite/hook.sh
+++ b/tools/conf/srv/gitolite/hook.sh
@@ -1,11 +1,11 @@
-#!/bin/bash
+#!/bin/sh
 
 # final packages dir
 packages_dir="/srv/gitolite/deploy/packages"
 # hook work directory
 hook_dir="/srv/gitolite/deploy/hook_dir"
 
-function is_initial(){
+is_initial(){
     local prj_name=$1
     if [ ! -d ${hook_dir}/${prj_name} ]; then
         echo "true"
@@ -14,18 +14,18 @@ function is_initial(){
     fi
 }
 
-function get_remote_rev(){
+get_remote_rev(){
     echo $(wget --no-check-certificate -qO- $1)
 }
 
-function valid_url(){
-    if [[ `wget -S --spider $1 --no-check-certificate 2>&1 | grep 'HTTP/1.1 200 OK'` ]];
+valid_url(){
+    if [[ `wget -S --spider $1 --no-check-certificate 2>&1 | grep -c 'HTTP/1.1 200 OK'` -eq 1 ]];
     then
         echo "true";
     fi
 }
 
-function create_package(){
+create_package(){
     # project name
     local prj_name=$1
     # git repository directory
@@ -87,7 +87,7 @@ function create_package(){
 
     fi
 
-    tar -zcpf ${pkg_tar} --directory=${pkg_dir} .
+    tar -zcpf ${pkg_tar} -C ${pkg_dir} .
 
     echo "Deploy: package ${pkg_tar} ready !"
     rm -r ${pkg_dir}
diff --git a/tools/conf/srv/gitolite/.gitolite.rc b/tools/conf/srv/gitolite/linux.gitweb.gitolite.rc
index d2c80b7..d2c80b7 100644
--- a/tools/conf/srv/gitolite/.gitolite.rc
+++ b/tools/conf/srv/gitolite/linux.gitweb.gitolite.rc
diff --git a/tools/conf/srv/gitolite/openbsd.cgit.gitolite.rc b/tools/conf/srv/gitolite/openbsd.cgit.gitolite.rc
new file mode 100644
index 0000000..6d7001a
--- /dev/null
+++ b/tools/conf/srv/gitolite/openbsd.cgit.gitolite.rc
@@ -0,0 +1,204 @@
+# configuration variables for gitolite
+
+# This file is in perl syntax.  But you do NOT need to know perl to edit it --
+# just mind the commas, use single quotes unless you know what you're doing,
+# and make sure the brackets and braces stay matched up!
+
+# (Tip: perl allows a comma after the last item in a list also!)
+
+# HELP for commands can be had by running the command with "-h".
+
+# HELP for all the other FEATURES can be found in the documentation (look for
+# "list of non-core programs shipped with gitolite" in the master index) or
+# directly in the corresponding source file.
+
+%RC = (
+
+    # ------------------------------------------------------------------
+
+    # default umask gives you perms of '0700'; see the rc file docs for
+    # how/why you might change this
+    #UMASK                           =>  0077,
+    UMASK                           =>  0027,
+
+    # look for "git-config" in the documentation
+    #GIT_CONFIG_KEYS                 =>  '',
+    GIT_CONFIG_KEYS                 =>  '.*',
+
+    # comment out if you don't need all the extra detail in the logfile
+    LOG_EXTRA                       =>  1,
+    # logging options
+    # 1. leave this section as is for 'normal' gitolite logging (default)
+    # 2. uncomment this line to log ONLY to syslog:
+    # LOG_DEST                      => 'syslog',
+    # 3. uncomment this line to log to syslog and the normal gitolite log:
+    # LOG_DEST                      => 'syslog,normal',
+    # 4. prefixing "repo-log," to any of the above will **also** log just the
+    #    update records to "gl-log" in the bare repo directory:
+    # LOG_DEST                      => 'repo-log,normal',
+    # LOG_DEST                      => 'repo-log,syslog',
+    # LOG_DEST                      => 'repo-log,syslog,normal',
+    # syslog 'facility': defaults to 'local0', uncomment if needed.  For example:
+    # LOG_FACILITY                  => 'local4',
+
+    # roles.  add more roles (like MANAGER, TESTER, ...) here.
+    #   WARNING: if you make changes to this hash, you MUST run 'gitolite
+    #   compile' afterward, and possibly also 'gitolite trigger POST_COMPILE'
+    ROLES => {
+        READERS                     =>  1,
+        WRITERS                     =>  1,
+    },
+
+    # enable caching (currently only Redis).  PLEASE RTFM BEFORE USING!!!
+    # CACHE                         =>  'Redis',
+
+    # ------------------------------------------------------------------
+
+    # rc variables used by various features
+
+    # the 'info' command prints this as additional info, if it is set
+        # SITE_INFO                 =>  'Please see http://blahblah/gitolite for more help',
+
+    # the CpuTime feature uses these
+        # display user, system, and elapsed times to user after each git operation
+        # DISPLAY_CPU_TIME          =>  1,
+        # display a warning if total CPU times (u, s, cu, cs) crosses this limit
+        # CPU_TIME_WARN_LIMIT       =>  0.1,
+
+    # the Mirroring feature needs this
+        # HOSTNAME                  =>  "foo",
+
+    # TTL for redis cache; PLEASE SEE DOCUMENTATION BEFORE UNCOMMENTING!
+        # CACHE_TTL                 =>  600,
+
+    # ------------------------------------------------------------------
+
+    # suggested locations for site-local gitolite code (see cust.html)
+
+        # this one is managed directly on the server
+        # LOCAL_CODE                =>  "$ENV{HOME}/local",
+
+        # or you can use this, which lets you put everything in a subdirectory
+        # called "local" in your gitolite-admin repo.  For a SECURITY WARNING
+        # on this, see http://gitolite.com/gitolite/non-core.html#pushcode
+	LOCAL_CODE                =>  "$rc{GL_ADMIN_BASE}/local",
+
+	# ------------------------------------------------------------------
+
+	# List of commands and features to enable
+
+	ENABLE => [
+
+		# COMMANDS
+
+		# These are the commands enabled by default
+		'help',
+		'desc',
+		'info',
+		'perms',
+		'writable',
+
+		# Uncomment or add new commands here.
+		# 'create',
+		# 'fork',
+		# 'mirror',
+		# 'readme',
+		# 'sskm',
+		# 'D',
+
+		# These FEATURES are enabled by default.
+
+		# essential (unless you're using smart-http mode)
+		'ssh-authkeys',
+
+		# creates git-config entries from gitolite.conf file entries like 'config foo.bar = baz'
+		'git-config',
+
+		# creates git-daemon-export-ok files; if you don't use git-daemon, comment this out
+		'daemon',
+
+		# creates projects.list file; if you don't use gitweb, comment this out
+		# 'gitweb',
+
+		# These FEATURES are disabled by default; uncomment to enable.  If you
+		# need to add new ones, ask on the mailing list :-)
+
+		# user-visible behaviour
+
+		# prevent wild repos auto-create on fetch/clone
+		# 'no-create-on-read',
+		# no auto-create at all (don't forget to enable the 'create' command!)
+		# 'no-auto-create',
+
+		# access a repo by another (possibly legacy) name
+		# 'Alias',
+
+		# give some users direct shell access.  See documentation in
+		# sts.html for details on the following two choices.
+		# "Shell $ENV{HOME}/.gitolite.shell-users",
+		# 'Shell alice bob',
+
+		# set default roles from lines like 'option default.roles-1 = ...', etc.
+		# 'set-default-roles',
+
+		# show more detailed messages on deny
+		# 'expand-deny-messages',
+
+		# show a message of the day
+		# 'Motd',
+
+		# system admin stuff
+
+		# enable mirroring (don't forget to set the HOSTNAME too!)
+		# 'Mirroring',
+
+		# allow people to submit pub files with more than one key in them
+		# 'ssh-authkeys-split',
+
+		# selective read control hack
+		# 'partial-copy',
+
+		# manage local, gitolite-controlled, copies of read-only upstream repos
+		# 'upstream',
+
+		# updates 'description' file instead of 'gitweb.description' config item
+		'cgit',
+
+		# allow repo-specific hooks to be added
+            'repo-specific-hooks',
+
+        # performance, logging, monitoring...
+
+            # be nice
+            # 'renice 10',
+
+            # log CPU times (user, system, cumulative user, cumulative system)
+            # 'CpuTime',
+
+        # syntactic_sugar for gitolite.conf and included files
+
+            # allow backslash-escaped continuation lines in gitolite.conf
+            # 'continuation-lines',
+
+            # create implicit user groups from directory names in keydir/
+            # 'keysubdirs-as-groups',
+
+            # allow simple line-oriented macros
+            # 'macros',
+
+        # Kindergarten mode
+
+            # disallow various things that sensible people shouldn't be doing anyway
+            # 'Kindergarten',
+    ],
+
+);
+
+# ------------------------------------------------------------------------------
+# per perl rules, this should be the last line in such a file:
+1;
+
+# Local variables:
+# mode: perl
+# End:
+# vim: set syn=perl: