#!/bin/sh
+MLIST="git@onelab.eu"
+
cd /git
gitwebfiles="git-favicon.png git-logo.png gitweb.cgi gitweb.css"
for file in $gitwebfiles; do gitwebpattern="${gitwebpattern}|$file" ; done
gitwebpattern=$(echo "$gitwebpattern" | sed -e 's,|,,')
-### function count () {
-###
-### echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx counting"
-###
-### echo git
-### ls git | wc -l
-###
-### echo gitweb
-### ls gitweb | egrep -v "$gitwebpattern" | wc -l
-###
-### }
-###
-### function missing_in_git () {
-###
-### echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx missing in git"
-###
-### for i in $(ls gitweb | egrep -v $gitwebpattern); do
-### b=$(basename $i .git)
-### [ -d git/$b ] || echo $b missing in git
-### done
-###
-### }
-
-function missing_in_gitweb () {
+function missing_gitweb () {
-### echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx missing in gitweb (from git)"
-###
-### for i in $(ls git); do
-### echo -n "$i "
-### if [ ! -h gitweb/${i}.git ] ; then
-### echo -n "ADDING $i.git "
-### (cd git; ln -s ../$i/.git ${i}.git)
-### fi
-### done
-
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx missing in gitweb (for web)"
for i in $gitwebfiles; do
echo -n "$i "
- if [ ! -h git/${i} ] ; then
- echo "LINKING.. " ; (cd git; ln -s ../${i} .)
+ if [ -f ${i} ] ; then
+ echo -n "OK "
+ else
+ echo -n "MISSING.. " ;
fi
done
echo ""
}
+
function fill_descriptions () {
echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx checking descriptions "
for arg in "$@" ; do
- # accept args like git/plcapi
- i=$(basename $arg)
- echo -n "$i "
- grep Unnamed git/$i/.git/description && { echo -n $i "Setting.. "; echo $i > git/$i/.git/description ; }
+ # accept args like plcapi or plcapi.git
+ b=$(basename $arg .git)
+ git=${b}.git
+ echo -n "$git "
+ grep -q Unnamed $git/description && { echo -n $i "Setting.. "; echo $b > $git/description ; }
done
echo ""
}
-function upload_archives () {
- echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx checking configs for uploadarch "
+function update_server_info () {
+ echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx updating server info "
for arg in "$@" ; do
- # accept args like git/plcapi
- i=$(basename $arg)
- echo -n "$i "
- if ! grep uploadarch git/$i/.git/config ; then
- echo -n $i "Setting.. ";
- cat >> git/$i/.git/config <<EOF
-[daemon]
- uploadpack = false
- uploadarch = true
-EOF
- fi
+ # accept args like plcapi or plcapi.git
+ b=$(basename $arg .git)
+ git=${b}.git
+ echo -n "$git "
+ cd $git
+ git update-server-info
+ cd - >& /dev/null
+ done
+ echo ""
+}
+
+function check_permissions () {
+ echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx checking permissions "
+ for arg in "$@" ; do
+ # accept args like plcapi or plcapi.git
+ b=$(basename $arg .git)
+ git=${b}.git
+ echo -n "$git "
+ chown -R root:onelab $git
+ chmod -R g+w,o-w $git
+ done
+ echo ""
+}
+
+function check_configs () {
+ echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx checking config (upload*, hooks...) "
+ for arg in "$@" ; do
+ # accept args like plcapi or plcapi.git
+ b=$(basename $arg .git)
+ git=${b}.git
+ echo -n "$git "
+ cd $git
+ git config core.bare true; echo -n "bare ";
+ git config core.sharedrepository >& /dev/null || { git config core.sharedrepository true; echo -n "sharedrepository "; }
+ git config daemon.uploadpack >& /dev/null || { git config daemon.uploadpack true; echo -n "uploadpack "; }
+ git config daemon.uploadarch >& /dev/null || { git config daemon.uploadarch true; echo -n "uploadarch "; }
+ (git config hooks.mailinglist|grep $MLIST) >& /dev/null || { git config hooks.mailinglist $MLIST; echo -n "mailinglist "; }
+ (git config hooks.announcelist|grep $MLIST) >& /dev/null || { git config hooks.announcelist $MLIST; echo -n "announcelist "; }
+ (git config hooks.envelopesender|grep $MLIST) >& /dev/null || { git config hooks.envelopesender $MLIST; echo -n "envelopesender "; }
+ git config hooks.emailprefix >& /dev/null || { git config hooks.emailprefix ''; echo -n "emailprefix "; }
+ cd - >& /dev/null
+ done
+ echo ""
+}
+
+function check_hooks () {
+ echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx checking hooks "
+ for arg in "$@" ; do
+ # accept args like plcapi or plcapi.git
+ b=$(basename $arg .git)
+ git=${b}.git
+ echo -n "$git "
+ # standard version is in /usr/share/doc/git-1.5.5.6/hooks/post-receive-email
+ (cd $git/hooks; cp -f /root/bin/post-receive-email-with-diffs post-receive; chmod 755 post-receive )
done
echo ""
}
-#count
-#missing_in_git
-missing_in_gitweb
-fill_descriptions $(ls git | egrep -v "${gitwebpattern}")
-upload_archives $(ls git | egrep -v "${gitwebpattern}")
+# missing_gitweb
+args="$@"
+[[ -z "$args" ]] && args=$(ls -d *.git)
+fill_descriptions $args
+update_server_info $args
+check_permissions $args
+check_configs $args
+check_hooks $args