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.