Synchronisation git pour Redmine

J’avais évoqué ici la synchronisation de dépôts Git (en l’occurrence Github mais ça n’a pas d’importance).

Mais voilà, ça ne fonctionnait plus tout à fait après migration de serveur, et ce n’était pas très clair pour moi honnêtement. Alors j’ai de nouveau regardé sur le wiki de Redmine et trouvé cet article qui décrit les choses très bien.

Seule différence, j’utilise les branches sous Git, et ce mode ne synchronise que la branche principale (“master”, ce que l’on appellerait le “trunk” sous subversion).

Initialisation de mon dépôt:

cd /var/redmine/git_repositories/
git clone —bare git@github.com:jbbarth/project.git project
cd project
git remote add origin git@github.com:jbbarth/project.git
git fetch -v

Ajout de ceci en CRON:

#sync of my github repos for redmine
*/10 * * * * /var/redmine/git_repositories/sync_repositories.sh >/dev/null

Et le petit script qui va bien:

#!/bin/sh

base=$(dirname $0)
[ "$base" == "." ] && base=$(pwd)

cd $base
for repo in $(ls -F |fgrep "/"); do
  cd $base/$repo
  git fetch origin
  for branch in $(ls refs/remotes/origin/); do
    git reset —soft refs/remotes/origin/$branch
  done
done

Youpi!