configurable own for a git repo
[infrastructure.git] / scripts / git-check.sh
index c15c3c4..ef395ed 100755 (executable)
@@ -1,5 +1,7 @@
 #!/bin/sh
 
+MLIST="git@onelab.eu"
+
 cd /git
 
 gitwebfiles="git-favicon.png git-logo.png gitweb.cgi gitweb.css"
@@ -37,14 +39,30 @@ function fill_descriptions () {
     echo ""
 }
 
+function update_server_info () {
+    echo "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx updating server info "
+    for arg in "$@" ; do
+       # 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
+       owner=root:onelab
+       if [ -f $git/owner ] ; then owner=$(cat $git/owner); fi
+       echo -n "$git ($owner) "
+       chown -R $owner $git
        chmod -R g+w,o-w $git
     done
     echo ""
@@ -58,12 +76,13 @@ function check_configs () {
        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 >& /dev/null || { git config hooks.mailinglist git@onelab.eu; echo -n "mailinglist "; }
-        git config hooks.announcelist >& /dev/null  || { git config hooks.announcelist  git@onelab.eu; echo -n "announcelist "; }
-        git config hooks.envelopesender >& /dev/null  || { git config hooks.envelopesender  git@onelab.eu; echo -n "envelopesender "; }
+       (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
@@ -78,7 +97,7 @@ function check_hooks () {
        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 )
+        (cd $git/hooks; cp -f /root/bin/post-receive-email-with-diffs post-receive; chmod 755 post-receive )
     done
     echo ""
 }
@@ -87,6 +106,7 @@ function check_hooks () {
 args="$@"
 [[ -z "$args" ]] && args=$(ls -d *.git)
 fill_descriptions $args
+update_server_info $args
 check_permissions $args
 check_configs $args
 check_hooks $args