Git & SPIP

Préambule

Cette article se concentre sur les plugins. Pour des raisons techniques, si vous souhaitez installer SPIP via git, il faut utiliser spip-cli, checkout ou git_loader :

Installer un plugin

Cloner un dépôt

Mettre à jour à la dernière version

Mettre à jour tous les plugins du répertoire courant

ou

Voir aussi :
https://github.com/aibeb/gitfox
https://linux.die.net/man/1/mr

Mettre à jour à la révision XXX

sha1 étant le numéro unique du commit. Par ex :

Mettre à jour un fork

Pour mettre à jour un fork sur lequel on a travaillé, en y reportant les commits faits sur le repo original. Le code suivant est à adapter :

Changer de branche

Contribuer au développement d’un plugin

Faire remonter un bug ou proposer une évolution

La forge git propose un nouvel outil en plus des listes de discussion : après avoir vérifié que votre problème ou suggestion n’a pas déjà été signalée, vous pouvez créer un ticket dans l’onglet Tickets du dépôt correspondant.

Créer un dépôt

Après en avoir discuté sur spip-dev@rezo.net ou https://discuter.spip.net, se rendre sur https://git.spip.net/, choisir la bonne organisation et créer le nouveau dépôt (le propriétaire doit être l’organisation choisie).

Pousser des fichiers locaux dans un dépôt vide nouvellement créé

Voir vos modifications par rapport au dépôt distant (status)

Voir les différences (diff)

La référence du premier commit, deux petits points et la référence du second commit. Si on ajoute l’option -w ça ignore les changements qui ne sont que des espaces.

Annuler un commit (revert)

123456 étant la référence du commit à annuler.

Pousser vos modifications dans un dépôt existant

Note : pour ajouter tous les fichiers, utiliser $ git add . avant de commiter.

Créer un tag (tag)

Depuis la bascule vers git, monter la version du plugin ne suffit plus pour distribuer les modifications via SVP et plugins.spip.net, il faut désormais créer un tag. Voir https://www.mail-archive.com/spip-dev@rezo.net/msg68899.html

Note : pas besoin de monter de version et créer des tags à chaque modification, il suffit de le faire une fois les modifications terminées quand vous estimez que le plugin est utilisable.

Créer une branche et basculer dessus

Note : une fois les modifications faites et commitées, il faut pousser sur cette branche avec $ git push origin nom_de_la_branche

QUESTION : Ou est-ce qu’il ne faut pas faire un —set-upstream ?

Proposer des modifications via pull-request (PR)

Quand contribuer via pull-request ? Si vous ne souhaitez pas faire de modifications directement sur la branche master d’un plugin, mais préférez passer par la validation de l’équipe qui maintient ce plugin.

Commencer par créer un branche, dans le même dépôt, pour travailler dessus. Une fois vos modifications poussées sur cette nouvelle branche, vous pouvez lancer la demande de fusion : via l’interface web, dans l’onglet Demandes d’ajout, cliquer sur le bouton Nouvelle demande d’ajout puis sélectionner dans les menus déroulants votre nouvelle branche et la branche cible qui va recevoir vos modifications (généralement Master), puis valider avec le bouton Nouvelle demande d’ajout.
Vous pouvez laisser un commentaire pour présenter votre demande d’ajout.

A partir de là, un mail est envoyé aux personnes en charge du plugin qui feront le nécessaire (acceptation de la PR, retour sur la page dédiée si besoin...).

Lorsque vous voulez proposer une modification du noyau de SPIP ou d’un des plugin-dist et que vous n’avez pas les droits sur ce repo, alors il faut d’abord faire un fork, éventuellement une branche sur ce fork mais pas nécessairement dans ce cas, puis ensuite faire une PR sur le repo préincipal.

Modifier une PR déjà proposée

Pour compléter les modifications déjà proposées via une PR (par exemple suite aux remarques faites), alors il suffit de commiter dans la branche de travail et la pusher : cette modification sera automatiquement prise en compte dans la PR.

Par contre, ça se traduira par plusieurs commits dans le repo destination.
 Pour éviter cela, l’admin qui validera le merge peut faire un "squash".
 ou bien vous pouvez aussi modifier le commit plutôt qu’en faire un nouveau :
avec

en local, sur la branche de PR, puis ensuite

 : ça va écraser la branche de la PR avec le nouveau commit et du coup la PR sera mise à jour. Attention il ne faut faire un

que sur les PR, jamais sur une branche utile ! (source)

Fusionner 2 branches

Pour fusionner une branche source (par exemple v2 en développement) dans une branche cible (par exemple master en production).

Pour bien saisir : il faut se placer dans la branche qui va recevoir les modifications (master dans notre exemple) pour y fusionner la branche contenant les modifications (v2 dans notre exemple)

Effacer une branche

Pour effacer une branche locale, par exemple après l’avoir fusionnée :

Pour effacer une branche distante

Note : Le paramètre [origin] étant le nom de votre dépot distant.

Ressources

La source exhaustive

https://git-scm.com/book/fr/

Pour bien commencer

https://blog.smellup.net/spip.php?article109
https://www.yterium.net/Git-c-est-facile
https://docs.gitlab.com/ce/gitlab-basics/start-using-git.html

Trucs & astuces

https://ohshitgit.com/fr

Mémos / Cheat sheets

https://github.github.com/training-kit/downloads/fr/github-git-cheat-sheet.pdf
https://github.com/AlexZeitler/gitcheatsheet/blob/master/gitcheatsheet.pdf

Autres ressources sur Contrib :

Article original sur Carnet Wiki

https://contrib.spip.net/Equivalences-des-commandes-SVN-GIT