[spip-dev] Git et twgit

Bonjour,

Cela fait un moment que je n’avais plus participé à la communauté. Beaucoup de choses ont évolué. Le passage à git est plutôt cool.

Lors de mes développements, j’ai pris l’habitude d’utiliser Twgit. La documentation est ici : https://github.com/Twenga/twgit/wiki/Twgit

Pour résumer, cela est inspiré de GitFlow. En peu de ligne de commandes on reproduit le principe de GitFlow (cf. feature, hotfix, release, etc. Je fais exprès d’utiliser les termes anglais car ils sont utilisés dans la nomination des branches).
Par exemple, je dois créer un correctif (une hotfix) rapidement sur un plugin. Dans mon terminal, au niveau du dépôt qui m’intéresse, il me suffit de taper “twgit hotfix start” pour la branche “hotfix-x.y.z+1” soit créée. Il reconnaît automatiquement le dernier numéro z qui a été créé (cf. tag vX.Y.Z)
Pour terminer le correctif et le publier, il suffit que je tape “twgit hotfix finish” pour :

  • merge de la branche hotfix-X.Y.Z+1 et le master (plus exactement la branche “stable”) soit fait ;

  • suppression de la branche hotfix-X.Y.Z+1 car devenue inutile

  • repositionnement sur la branche “stable”.

Voilà grosso modo le fonctionnement. C’est plutôt bien fichu. Je vous invite à lire la documentation si vous êtes intrigué.e.s.

Ce à quoi je voulais en venir est : cela pose problème sur le git des extensions l’utilisation de cet outil ? Il n’y a rien à installer sur le gitea du serveur. Tout se passe du niveau poste utilisateur.

Le processus mis en place sur les git de spip-contrib prend en compte la création du tag pour générer une nouvelle archive. L’existence de la branche “stable” (nécessaire à twgit) casserait ce processus ?

Bien à vous,

Teddy

Bonjour,

Je me permets une petite relance sur le sujet. Avez-vous pu le lire et surtout avez-vous une avis, une contre indication ?

Bien à vous, :slight_smile:

Bonjour,

Je me permets une petite relance sur le sujet. Avez-vous pu le lire et surtout avez-vous une avis, une contre indication ?

[...]

Lors de mes développements, j'ai pris l'habitude d'utiliser Twgit.

Je ne connaissais pas. Ça n’a pas l’air trop connu d’ailleurs, même si ça semble parfois utilisé et que la magie ne fait pas tout (Please, stop saying that you “know how to use GIT”. | by The Marvelous Cow | Medium)

[...]

  L'existence de

la branche "stable" (nécessaire à twgit) casserait ce processus ?

A priori non, ça ne casse pas le processus de tag => zip.

Cela étant dit, pourquoi diable n’ont-ielles pas conservé "master". Elle devient quoi cette branche "master" dans tout ça ?

(même si pour le coup, probablement sans le faire exprès, ielles éliminent le problème de terminologie master/slave...).

MM.

Merci pour ta réponse.

Hello,

Merci pour ta réponse.
Je suis tout à fait d’accord avec l’analyse et le retour d’expérience de cette personne.
Ce n’est pas parce qu’on utilise un outil « git » que nous connaissons Git. Personnellement, c’est exactement pour ça que j’utilise lesdits outils! Git n’étant pas ma tasse de thé. Je vois ses avantages mais des choses me manquent de SVN. Bref. Pas de débat, c’est juste une affinité. :wink:

J’avoue qu’aujourd’hui je ne vois pas ce qu’on faisait avec svn qui ne soit pas possible avec git.

L’existence de

la branche « stable » (nécessaire à twgit) casserait ce processus ?

A priori non, ça ne casse pas le processus de tag => zip.

C’est ce qu’il me semblait mais je préférais demander l’avis et l’autorisation de la communauté.

Oui mais ça ne doit pas devenir systématique non plus aujourd’hui.
On ne doit pas imposer un commit une montée de version.

Cela étant dit, pourquoi diable n’ont-ielles pas conservé « master ». Elle devient quoi cette branche « master » dans tout ça ?

« Master » devient une branche morte en quelques sortes. Mais, ici, dans la communauté, on utilise la branche master. Je verrai (soit par un hook, soit manuellement) a faire un merge de la stable dans le master régulièrement.

Oui alors moi ça me pose un problème ça.
Je ne suis pas chaud à ce que pour certains plugins on ait une branche master qui ne soit plus le master ou qui doublonne avec une autre branche de temps en temps.
A mon avis un outil perso ne doit pas imposer un formalisme.

(même si pour le coup, probablement sans le faire exprès, ielles éliminent le problème de terminologie master/slave…).

En effet, je n’ai jamais aimé cette terminologie de « master » qui sous-entend « slave » habituellement dans ce contexte.
Si nous avions plutôt utilisé le terme de « master » en tant que « maître », « expert », ou tout autre synonyme, cela aurait été moins subversif.

En anglais ça veut dire « principal ».
Il n’y a donc aucune autre connotation.

Eric Lupinacci a écrit le 13/11/2020 à 08:44 :

J'avoue qu'aujourd'hui je ne vois pas ce qu'on faisait avec svn qui ne soit pas possible avec git.

svn up permettait de mettre à jour SPIP + les externals
on peut le faire avec git, mais faut plus de lignes
pareil pour
svn sw
svn co

De plus, avec SVN il y avait la notion (facile à mettre en œuvre avec TortoiseSVN de svn move ou de svn copy ou de svn copy and rename qui mémorisait d'où venait le nouveau fichier et gardait l'historique.
Et avec la zone, ça permettait de copier un fichier d'un autre plugin puis de le modifier en gardant l'historique complet.

Y'a pas mort d'hommes.

Et enfin, svn up faisait un merge automatique avec des modifs locales.
Avec git, il faut jouer avec stach

Et svn info pour avoir le n° de révision actuelle
pour faire ensuite svn up -runnuméroinférieur
beaucoup plus intuitif que git sur ce coup.

Mais je suis sûr qu'un jour, je trouverais tellement d'avantages à Git que je ne regretterai plus svn.
La route est encore longue :wink:

SPIP fort et vert (forever) !

Si si :slight_smile:
ça veut dire "principal" *parce que* historique depuis master/slave et justement absolument dans toutes les communautés *anglophones* il y a un mouvement social pour supprimer totalement cette notion de master. Donc bien sûr que si il y a une connotation et un mouvement pour ne plus l'utiliser, de manière internationale.

Yop,

Comme je le disais, et c'est pour ça que je le disais, c'est en travail pour changer ça chez les anglophones eux-mêmes, dans un très très grand nombre de logiciels, donc c'est sans rapport à la traduction. Le mot principal pour dire… principal, c'est "main" ou "primary", et non pas "master" du tout.

https://www.zdnet.com/article/github-to-replace-master-with-alternative-term-to-avoid-slavery-references/

Waouh tu maitrises la langue de cheik spire…
En fait, il y a tellement d’autres traductions possibles que principal est un mot compliqué à traduire en anglais.
Il est très contextuel.
J’avoue que je ne suis pas aussi péremptoire que toi sur l’origine de master vs principal (master bedroom for instance, est ce celle du maitre ?) mais ça serait intéressant de connaitre le fin mot de l’histoire.

Hello,

Hello,

Merci pour ta réponse.
Je suis tout à fait d’accord avec l’analyse et le retour d’expérience de cette personne.
Ce n’est pas parce qu’on utilise un outil « git » que nous connaissons Git. Personnellement, c’est exactement pour ça que j’utilise lesdits outils! Git n’étant pas ma tasse de thé. Je vois ses avantages mais des choses me manquent de SVN. Bref. Pas de débat, c’est juste une affinité. :wink:

J’avoue qu’aujourd’hui je ne vois pas ce qu’on faisait avec svn qui ne soit pas possible avec git.

En complément de la réponse de RealET, le fait de faire un svn checkout, ça ne ramène pas des Go de données (selon l’ancienneté et le type de données historisées). Et si dans le dépôt SVN, je ne désire qu’un répertoire, ben, je peux prendre ce répertoire uniquement sans problème. Sur git, je dois prendre l’entièreté du projet pour pouvoir récupérer ledit répertoire.
Pour le « Go de données », j’ai eu des collègues juniors qui, sans le faire exprès, versionnaient le contenu des répertoires « IMG », « local » et « tmp »… Quand je m’en rendais compte en faisant git clone xxxxxx, c’était un peu « trop tard » ou demandait bcp de manipulation.

L’existence de

la branche « stable » (nécessaire à twgit) casserait ce processus ?

A priori non, ça ne casse pas le processus de tag => zip.

C’est ce qu’il me semblait mais je préférais demander l’avis et l’autorisation de la communauté.

Oui mais ça ne doit pas devenir systématique non plus aujourd’hui.
On ne doit pas imposer un commit une montée de version.

Justement, l’utilisation de twgit n’interdit aucunement l’utilisation des commandes git habituelles! le twgit facilite la création de branche, de tags, de merge, etc. Le dépôt git reste ainsi très propre, pas de branches inutiles/inutilisées.
Donc, la montée de version peut comprendre plusieurs commits sans soucis.

De plus, twgit permettra de signifier à l’ensemble des personnes travaillant sur le dépôt qu’il y a une hotfix en cours, ou une release. Bien entendu, l’alerte est faite si on utilise les commandes twgit. Donc, encore une fois, une meilleure gestion du projet git.

Cela étant dit, pourquoi diable n’ont-ielles pas conservé « master ». Elle devient quoi cette branche « master » dans tout ça ?

« Master » devient une branche morte en quelques sortes. Mais, ici, dans la communauté, on utilise la branche master. Je verrai (soit par un hook, soit manuellement) a faire un merge de la stable dans le master régulièrement.

Oui alors moi ça me pose un problème ça.
Je ne suis pas chaud à ce que pour certains plugins on ait une branche master qui ne soit plus le master ou qui doublonne avec une autre branche de temps en temps.
A mon avis un outil perso ne doit pas imposer un formalisme.

Je n’ai pas trouvé comment changer cette dépense à « stable ». Mais comme a pu dire RastaPopoulos, un mouvement s’interroge sur le bien fondé du terme « master ».

(même si pour le coup, probablement sans le faire exprès, ielles éliminent le problème de terminologie master/slave…).

En effet, je n’ai jamais aimé cette terminologie de « master » qui sous-entend « slave » habituellement dans ce contexte.
Si nous avions plutôt utilisé le terme de « master » en tant que « maître », « expert », ou tout autre synonyme, cela aurait été moins subversif.

En anglais ça veut dire « principal ».
Il n’y a donc aucune autre connotation.

Cela dépend du contexte et de la sensibilité des uns et des autres. :slight_smile:
Personnellement, de mon Histoire, quand je lis « master », je pense inconsciemment à « slave ».

Ybbet

Yop,

J’avoue qu’aujourd’hui je ne vois pas ce qu’on faisait avec svn qui ne soit pas possible avec git.

En complément de la réponse de RealET, le fait de faire un svn checkout, ça ne ramène pas des Go de données (selon l’ancienneté et le type de données historisées). Et si dans le dépôt SVN, je ne désire qu’un répertoire, ben, je peux prendre ce répertoire uniquement sans problème. Sur git, je dois prendre l’entièreté du projet pour pouvoir récupérer ledit répertoire.
Pour le « Go de données », j’ai eu des collègues juniors qui, sans le faire exprès, versionnaient le contenu des répertoires « IMG », « local » et « tmp »… Quand je m’en rendais compte en faisant git clone xxxxxx, c’était un peu « trop tard » ou demandait bcp de manipulation.

Que RealET vive dans le passé et surtout s’y accroche en ne ratant aucune occasion de le rappeler c’est pas nouveau.

Après, le coup de Go c’est pas un peu une galéjade ?
J’ai l’ensemble du Gitea sur mon ordi et ça pèse 1,7 Go.

Oui alors moi ça me pose un problème ça.
Je ne suis pas chaud à ce que pour certains plugins on ait une branche master qui ne soit plus le master ou qui doublonne avec une autre branche de temps en temps.
A mon avis un outil perso ne doit pas imposer un formalisme.

Je n’ai pas trouvé comment changer cette dépense à « stable ». Mais comme a pu dire RastaPopoulos, un mouvement s’interroge sur le bien fondé du terme « master ».

Bien fondé ou pas ça va pas changer demain sous git.
Donc on va devoir vivre avec un moment…

(même si pour le coup, probablement sans le faire exprès, ielles éliminent le problème de terminologie master/slave…).

En effet, je n’ai jamais aimé cette terminologie de « master » qui sous-entend « slave » habituellement dans ce contexte.
Si nous avions plutôt utilisé le terme de « master » en tant que « maître », « expert », ou tout autre synonyme, cela aurait été moins subversif.

En anglais ça veut dire « principal ».
Il n’y a donc aucune autre connotation.

Cela dépend du contexte et de la sensibilité des uns et des autres. :slight_smile:
Personnellement, de mon Histoire, quand je lis « master », je pense inconsciemment à « slave ».

Moi ça me fait plus penser à servant, mais c’est mon époque :wink:

vive dans le passé et surtout s’y accroche

L’avenir, c’est du passé en préparation, L’avenir est une porte, le passé en est la clé.

j’en conclu qu’il faut être passé pour avoir de l’avenir

un vieux à plus d’avenir Cool

Eric Lupinacci a écrit le 13/11/2020 à 19:45 :

Que RealET vive dans le passé et surtout s'y accroche en ne ratant aucune occasion de le rappeler c'est pas nouveau.

Moi aussi je t'aime Éric !
(puisque qui aime bien charrie bien)

Ybbet Spip a écrit le 02/11/2020 à 13:48 :

L'existence de la branche "stable" (nécessaire à twgit) casserait ce processus ?

Est-ce que ce ne serait pas plus simple de faire une issue sur twgit pour leur demander de rendre le nom de cette branche paramétrable ?

Yop,

J’avoue qu’aujourd’hui je ne vois pas ce qu’on faisait avec svn qui ne soit pas possible avec git.

En complément de la réponse de RealET, le fait de faire un svn checkout, ça ne ramène pas des Go de données (selon l’ancienneté et le type de données historisées). Et si dans le dépôt SVN, je ne désire qu’un répertoire, ben, je peux prendre ce répertoire uniquement sans problème. Sur git, je dois prendre l’entièreté du projet pour pouvoir récupérer ledit répertoire.
Pour le « Go de données », j’ai eu des collègues juniors qui, sans le faire exprès, versionnaient le contenu des répertoires « IMG », « local » et « tmp »… Quand je m’en rendais compte en faisant git clone xxxxxx, c’était un peu « trop tard » ou demandait bcp de manipulation.

Que RealET vive dans le passé et surtout s’y accroche en ne ratant aucune occasion de le rappeler c’est pas nouveau.

Après, le coup de Go c’est pas un peu une galéjade ?
J’ai l’ensemble du Gitea sur mon ordi et ça pèse 1,7 Go.

Oui… Mais quand tu dois récupérer X projets en peu de temps car tu as de la TMA (et dans le cadre d’une hotfix), télécharger X Go de données à chaque fois, ça fait long. Surtout quand tu regardes les fichiers SPIP (plus les plugins que du projet) et que l’ensemble ne fait que 240Mo… et que le projet git date d’il y a 3 mois… Tu rages un peu sur un réseau lent… :smiley:

Oui alors moi ça me pose un problème ça.
Je ne suis pas chaud à ce que pour certains plugins on ait une branche master qui ne soit plus le master ou qui doublonne avec une autre branche de temps en temps.
A mon avis un outil perso ne doit pas imposer un formalisme.

Je n’ai pas trouvé comment changer cette dépense à « stable ». Mais comme a pu dire RastaPopoulos, un mouvement s’interroge sur le bien fondé du terme « master ».

Bien fondé ou pas ça va pas changer demain sous git.
Donc on va devoir vivre avec un moment…

(même si pour le coup, probablement sans le faire exprès, ielles éliminent le problème de terminologie master/slave…).

En effet, je n’ai jamais aimé cette terminologie de « master » qui sous-entend « slave » habituellement dans ce contexte.
Si nous avions plutôt utilisé le terme de « master » en tant que « maître », « expert », ou tout autre synonyme, cela aurait été moins subversif.

En anglais ça veut dire « principal ».
Il n’y a donc aucune autre connotation.

Cela dépend du contexte et de la sensibilité des uns et des autres. :slight_smile:
Personnellement, de mon Histoire, quand je lis « master », je pense inconsciemment à « slave ».

Moi ça me fait plus penser à servant, mais c’est mon époque :wink:

++
Eric

Autre point que j’apprécie chez git et qui n’est pas présent sous SVN : les git attributes. Il me suffit d’indiquer dans un fichier si un fichier/répertoire doit être exporter quand tu crées une archive.
Tandis que sur SVN, tu devais le faire manuellement ou par script au mieux. Pas de ligne de commande dédiée ou de fichier de configuration.
Il y a des avantages et des inconvénients à chaque techno. Il faut savoir s’accommoder, s’adapter. :wink:

Ybbet.