VersionPress
ATTENTION (2017-07-20) - la situation peut avoir changé depuis que ces informations ont été écrites
Note : je n'ai jamais réussi à faire marcher VersionPress correctement, ça n'a toujours débouché que sur des sacs de nœuds (Mathias).
On utilise maintenant (2017-08) plutĂ´t Wordmove pour synchroniser nos instances.
Installer VersionPress
Se rendre sur le GitHub de VersionPress et télécharger la dernière version stable au format zip (ex: - Installer VersionPress 3.0.2 la 3.0.2)Décompresser ce zip dans wp-content/plugins
Se rendre dans le tableau de bord (TdB) de Wordpress, dans "extensions", puis activer VersionPress.
Se rendre dans le volet "VersionPress" qui est apparu en haut du menu du TdB, choisir un nom d'environnement parlant, et cliquer sur le bouton bleu.
Attention, ça consomme beaucoup de mémoire : s'assurer que la config PHP définit memory_limit à une valeur suffisamment large (sur Aphyllanthe, 256M était trop faible).
Cloner le site "beta/test" chez soi
Pour l'instant, le script wp vp clone ne sait pas cloner un site distant (ou alors je n'ai rien compris et pas réussi). Voici donc la longue marche que j'ai suivie pour arriver à un résultat à peu près correct.Installer un WP tout neuf chez soi
Télécharger la même version de WP que celle utilisée sur beta/test, la dézipper chez soi (dans le même sous-dossier à partir de la racine du serveur Web, ce serait bien que ça marche dans un dossier différent mais je n'ai pas voulu prendre de risques).Selon la config d'Apache/PHP, il se peut qu'il faille donner des droits à l'utilisateur Apache pour écrire dans le dossier Wordpress. Perso j'ai ajouté mon utilisateur au groupe www-data (attention il faut se délogger-relogger pour que ça prenne effet), attribué tous les fichiers WP à l'utilisateur www-data et au groupe www-data, et ajouté des droits d'écriture pour le groupe partout :
sudo adduser mathias www-data sudo chown -R www-data:www-data dossierwordpress sudo chmod g+rw -R dossierwordpress
Préparer une base de données et lancer la procédure d'installation de Wordpress (je ne détaille pas).
Installer et activer VersionPress
Voir en haut de cette page.Pour avoir les droits suffisants par la suite, j'ai du changer le propriétaire du dossier du plugin avant d'activer VersionPress :
sudo chown www-data:www-data -R versionpress
Par la suite, j'ai aussi du donner des droits sur vpdb :
sudo chmod g+rwx -R wp-content/vpdb
Installer wp-cli
Suivre cette procédure.Ajustements
Pour pouvoir travailler avec mon utilisateur courant, j'ai du lui donner le droit d'Ă©criture dans .git :sudo chmod g+rwx -R .git
Définir "beta/test" comme dépôt distant
wp vp pull --from=ssh://beta@aphyllanthe:/home/beta/www/test
Et là , ça marche mais crée plein de conflits, alors même que la branche master du dépôt local était propre. Pas compris pourquoi.
Chez moi, le lancement raté de cette commande a tout de même ajouté un dépôt distant nommé "beta" et pointant sur la bonne URL.
Pour s'en assurer :
git remote show
Si ce n'est pas le cas, l'ajouter Ă la main (je le nomme ici "beta") :
git remote add beta ssh://beta@aphyllanthe:/home/beta/www/test
La config est bonne.
Interlude
C'est le moment de copier tout le répertoire de Wordpress dans une sauvegarde, car ce qu'on va faire ensuite est très enclin à tout péter.Vérifier l'état du dépôt local
Avant de tirer des changements, il faut s'assurer que le dépôt local soit au clair.git status
Perso j'avais un tas de fichiers non versionnés. Je les ai donc ajoutés puis commités :
git add -A git commit -m "Mise au carré du dépôt local"
Tirer les changements
Et lĂ , c'est la fĂŞte !git pull beta master
Et lĂ , c'est plus la fĂŞte.
J'ai eu plein de conflits, que j'ai réglés en écrasant la version locale avec la version distante.
Appliquer les changements
Une fois les conflits réglés (git status doit répondre que tout est OK), on peut enfin appliquer les changements pour synchroniser les bases de données :wp vp apply-changes
Ça prend 1000 ans, et à la fin ça marche.
Youpi ! Je vais me coucher :-)
Échanger des changements
Dans cet exemple, j'ai synchronisé mon WP local avec le site de test en ligne.Ensuite, j'ai créé en local une page "Page perso de Mathias", que je vais essayer de partager sur le site de test en ligne.
La difficulté ici est que c'est l'install locale qui push vers le site en ligne, ce dernier ne pouvant pas puller l'install locale (pas d'IP routable).
Or, Git refuse de finaliser un push s'il y a des fusions à faire (s'il ne peut pas faire un "fast-forward"), ce qui est assez normal. L'ennui c'est qu'avec VP il y a quasi-systématiquement des fusions, contrairement à ce que la doc laisse penser.
La solution est donc de pousser dans une nouvelle branche. Mais wp vp push ne sait pas faire ça ! Alors il faut pousser à la main avec Git :
git branch mod/les-modifs-de-mathias-du-jour git checkout mod/les-modifs-de-mathias-du-jour git push beta mod/les-modifs-de-mathias-du-jour
Et ensuite, se rendre dans le dépôt distant, fusionner à la main et appliquer les changements :
git checkout master #au cas où on ne soit pas sur la branche master (se méfier, si on n'y est pas c'est peut-être pour une bonne raison) git merge mod/les-modifs-de-mathias-du-jour wp vp apply-changes
Et là , la "Page perso de Mathias" apparaît dans la liste des pages. Youpi !
Conclusion intermédiaire cynique et partiale
Il faut environ 10mn pour partager une pauvre page.Promos au rayon WTF
Noter ici tous les comportements incongrus de VersionPress.Les modifications pas suivies
Avant de créer la page mentionnée au chapitre précédent, j'ai aussi créé un article "Article de Mathias". L'interface de VP locale n'a jamais affiché ce changement. Après avoir fait un pull-push, mon article a disparu !L'URL du dépôt distant qui change
Ce matin j'ai fait un pull. Ça m'a pullé n'importe quoi. L'URL du dépôt distant (git remote show beta) avait changé, pour prendre celle de l'Espace Projets ! Celui-ci étant checkouté dans un sous-dossier (wp-content/plugins/tela-botanica), peut-être VP a-t-il cru détecter un changement ?J'ai du restaurer l'URL distante comme suit :
git remote set-url beta ssh://blabla....
Groupes BuddyPress non synchronisés
Les utilisateurs WP ont bien été synchronisés, mais les groupes BP non.Pourquoi ? Mystayre.