Aperçu rapide du problème. J'ai un site web qui est dans SVN et extrait sur 2 serveurs différents pour l'équilibrage de charge. Il s'agit d'un site Drupal et tout, à part le répertoire des actifs et des fichiers, est extrait localement sur les serveurs.
Maintenant, lors d'une mise à jour, je dois mettre à jour manuellement les deux checkouts locaux (svn up), ce qui est sujet à des erreurs et entraînera encore plus de surcharge si nous décidons d'ajouter un autre serveur web à la rotation.
En résumé, je dois trouver un moyen d'automatiser la synchronisation des deux caisses locales afin de n'avoir qu'une seule mise à jour à faire sur un serveur et que tout soit synchronisé.
Les choses que j'ai essayées :
-
somme md5 du répertoire sur le serveur 1 et par SSH sur le serveur 2 (à l'exclusion des répertoires .svn) en utilisant une commande find, puis en exécutant svn ups sur le serveur 2 en utilisant les résultats de diff comme arguments. Cela me donne toujours les mêmes fichiers qui sont différents.
ssh $TARGET "cd "$SVN_TARGET" && find . -name .svn -prune -o -type f -print0 | xargs -0 md5sum" >> /tmp/server2.sums
cd $SVN_SOURCE && find . -name .svn -prune -o -type f -print0 | xargs -0 md5sum >> /tmp/server1.sums
diff /tmp/server1.sums /tmp/server2.sums | cut -d"." -f2 | xargs -i ssh $TARGET "su www-data -c 'svn up /dir/to/svn/repo/{} --username \"*******\" --mot de passe \"******\"'"
-
en utilisant svn info et ensuite svn diff avec la révision de la tête pour me donner tous les fichiers modifiés. Le problème est que l'identifiant de la révision locale n'est pas égal à celui de la révision principale sur le serveur SVN, même s'il est à jour.
Toute aide est appréciée et je m'excuse pour le mur de texte :)