[spip-dev] Migration SVN->GIT et historiques

Bonjour,

suite à la campagne de migration des plugins et squelettes de spip-zone en SVN vers des projets git indépendants sur git.spip.net est apparu un soucis sur la reprise de l’historique :
* chaque fois que dans l’historique SVN on a déplacé un dossier xxxxxx vers un sous-dossier xxxxxx/trunk ou xxxxxx/branches/yyyy cela casse l’historique dans la migration.

On a donc de manière générale, des historiques partiels uniquement sur les projets git de https://git.spip.net/spip-contrib-squelettes et https://git.spip.net/spip-contrib-extensions

On a donc fait une évaluation des dégats, et pour un certain nombre de projets on a repris l’historique sur SVN en remontant au moment du déplacement et en rejouant par dessus les commits qui avaient été fait par la suite.

En gros on est repassé de xxxxxx/trunk vers xxxxxx quand il y avait moins d’une vingtaine de commits à reprendre.

Dans certains cas spéciaux pour lesquels les plugins avaient changé de répertoire au cours de leur vie on a fait une migration avec des réglages personalisés.

Cela concerne au total une 100aine de plugins et squelettes pour lesquels on a récupéré tout ou partie de l’historique.

## En l’état actuel :

Pour les squelettes la situation est à peu près saine, car on a eu beaucoup moins de mouvement et les historiques sont plus simples

Pour les plugins :
- il n’y a a priori plus de plugins avec un historique court pour lesquels on peut reprendre facilement l’historique sur SVN pour migrer
- mais de manière générale on perd des queues d’historiques lointains

## Proposition de rustine

Comme on a semble-t-il pas de solution simple pour récupérer ces historiques en git, et que perdre de l’histoire c’est toujours embêtant - sans parler du problème que cela peut poser dans la recherche de bugs, j’ai fait le test d’importer en git-svn les répertoires complets _squelettes_ et _plugins_ :

https://github.com/Cerdic/spip-zone-squelettes
https://github.com/Cerdic/spip-zone-plugins

Je les ai mis sur mon compte le temps de tester mais on peut les migrer dans l’orga SPIP ensuite.

L’idée est de stocker ces 2 gros repos git qui font ~3Go au total sur github pour pouvoir aller y piocher dedans l’historique en cas de besoin.
Cela nous permettra de fermer définitivement le SVN et le trac quand on le décidera (et d’ici là on peut resynchroniser de temps en temps ces 2 projets archives)

## Ce qu’il faut faire pour valider la migration vers git

Il faut maintenant que chacun aille voir les repositories avec lesquels il est habitué à travailler et qui comptent pour lui, et regarde si l’historique est satisfaisant ou non, et si les morceaux plus anciens manquants sont bien retrouvable via les 2 projets archives sur github

Peut-être que malgré notre attention il reste des cas avec un historique tronqué qu’on peut réparer, je vous invite donc à nous faire remonter les cas les plus gênants pour vous qu’on regarde ça pour dire si oui ou non on peut faire mieux.

Et une fois que tout le monde est OK et que personne ne crie plus au scandale, on peut décider que la nouvelle référence des projets est git.spip.net, le svn n’étant plus qu’un miroir temporaire le temps que tout le monde migre.

C’est important de le noter car pour tous les plugins migrés dans trunk, les branches créées dans git ne seront pas créeés dans SVN, qui va donc petit à petit être de moins en moins complet.

A vos remarques et retours,

Hop,

Cela concerne au total une 100aine de plugins et squelettes pour lesquels on a récupéré tout ou partie de l’historique.

Merci pour tout ce travail :slight_smile:

## Proposition de rustine

Comme on a semble-t-il pas de solution simple pour récupérer ces historiques en git, et que perdre de l’histoire c’est toujours embêtant - sans parler du problème que cela peut poser dans la recherche de bugs, j’ai fait le test d’importer en git-svn les répertoires complets _squelettes_ et _plugins_ :

GitHub - Cerdic/spip-zone-squelettes: Backup de svn://zone.spip.org/spip-zone/_squelettes_
GitHub - Cerdic/spip-zone-plugins: Backup de svn://zone.spip.org/spip-zone/_plugins_

Je les ai mis sur mon compte le temps de tester mais on peut les migrer dans l’orga SPIP ensuite.

À noter aussi que Camille a une piste pour rétablir l'historique de ces plugins sur git.spip.net, espérons que ça fonctionnera.

Et oui pour migrer ces repos d'archive dans l'orga SPIP.

Il faut maintenant que chacun aille voir les repositories avec lesquels il est habitué à travailler et qui comptent pour lui, et regarde si l’historique est satisfaisant ou non, et si les morceaux plus anciens manquants sont bien retrouvable via les 2 projets archives sur github

Pour le cas que j'avais repéré c'est bon, cf historique cassé sur git.spip.net :

https://git.spip.net/spip-contrib-extensions/sympatic/commits/branch/master
https://git.spip.net/spip-contrib-extensions/sympatic/commits/branch/v0

Et l'historique complet est bien visible sur le repo github :

Hello,

Cela concerne au total une 100aine de plugins et squelettes pour lesquels on a récupéré tout ou partie de l’historique.

Cette liste est bien migrée sous Git maintenant et synchronisée avec SVN donc ?

En l’état actuel :

Pour les squelettes la situation est à peu près saine, car on a eu beaucoup moins de mouvement et les historiques sont plus simples

Il y a 43 repos sous Git aujourd’hui, donc tous synchronisés avec svn.

Pour les plugins :

  • il n’y a a priori plus de plugins avec un historique court pour lesquels on peut reprendre facilement l’historique sur SVN pour migrer
  • mais de manière générale on perd des queues d’historiques lointains

Il y a 640 plugins migrés sous Git.
Certains proviennent d’un trunk initial d’autres sont issus d’un svn sans trunk : dans ce cas il faut savoir que toute création de branches sous git ne sera pas synchronisée sous svn car subgit n’est actuellement pas configuré pour cela.
Donc peut-on facilement identifier cette liste de plugins migrés sans trunk ?

Proposition de rustine

Comme on a semble-t-il pas de solution simple pour récupérer ces historiques en git, et que perdre de l’histoire c’est toujours embêtant - sans parler du problème que cela peut poser dans la recherche de bugs, j’ai fait le test d’importer en git-svn les répertoires complets squelettes et plugins :

https://github.com/Cerdic/spip-zone-squelettes

https://github.com/Cerdic/spip-zone-plugins

Je les ai mis sur mon compte le temps de tester mais on peut les migrer dans l’orga SPIP ensuite.

L’idée est de stocker ces 2 gros repos git qui font ~3Go au total sur github pour pouvoir aller y piocher dedans l’historique en cas de besoin.
Cela nous permettra de fermer définitivement le SVN et le trac quand on le décidera (et d’ici là on peut resynchroniser de temps en temps ces 2 projets archives)

A quoi correspond cette liste exactement : à tous les squelettes et plugins non encore sous Git ou à tous les plugins et squelettes de la zone ?

Ce qu’il faut faire pour valider la migration vers git

Il faut maintenant que chacun aille voir les repositories avec lesquels il est habitué à travailler et qui comptent pour lui, et regarde si l’historique est satisfaisant ou non, et si les morceaux plus anciens manquants sont bien retrouvable via les 2 projets archives sur github

Peut-être que malgré notre attention il reste des cas avec un historique tronqué qu’on peut réparer, je vous invite donc à nous faire remonter les cas les plus gênants pour vous qu’on regarde ça pour dire si oui ou non on peut faire mieux.

Et une fois que tout le monde est OK et que personne ne crie plus au scandale, on peut décider que la nouvelle référence des projets est git.spip.net, le svn n’étant plus qu’un miroir temporaire le temps que tout le monde migre.

Oui ok mais je pense qu’il faut qu’on fasse des listes pour voir ce qui est fait et pas fait.
Une liste des repos de la zone et pour chacun si il est migré ou pas et si migré trunk ou pas.
J’arrive pas pour le moment à me faire une idée de ce que représente le gitea.

Hop,

Ok, ok, mais alors pas du cheddar.

Bonjour,

suite à la campagne de migration des plugins et squelettes de spip-zone en SVN vers des projets git indépendants sur git.spip.net est apparu un soucis sur la reprise de l’historique :
* chaque fois que dans l’historique SVN on a déplacé un dossier xxxxxx vers un sous-dossier xxxxxx/trunk ou xxxxxx/branches/yyyy cela casse l’historique dans la migration.

On a donc de manière générale, des historiques partiels uniquement sur les projets git de spip-contrib-squelettes · GitLab et spip-contrib-extensions · GitLab

On a donc fait une évaluation des dégats, et pour un certain nombre de projets on a repris l’historique sur SVN en remontant au moment du déplacement et en rejouant par dessus les commits qui avaient été fait par la suite.

En gros on est repassé de xxxxxx/trunk vers xxxxxx quand il y avait moins d’une vingtaine de commits à reprendre.

Dans certains cas spéciaux pour lesquels les plugins avaient changé de répertoire au cours de leur vie on a fait une migration avec des réglages personalisés.

Cela concerne au total une 100aine de plugins et squelettes pour lesquels on a récupéré tout ou partie de l’historique.

je suis pas sur de saisir. En gros d'avoir transformé des /plugin/ en /plugin/trunk empeche la conservation de l'historique dans tous les cas, mais il est possible de revenir à /plugin/ puis de remettre dessus ce qui a été fait en /trunk. ceci est possible en historique court car ca peut se faire manuellement, mais ce serait complexe en historique long ?

## En l’état actuel :

Pour les squelettes la situation est à peu près saine, car on a eu beaucoup moins de mouvement et les historiques sont plus simples

Pour les plugins :
- il n’y a a priori plus de plugins avec un historique court pour lesquels on peut reprendre facilement l’historique sur SVN pour migrer
- mais de manière générale on perd des queues d’historiques lointains

## Proposition de rustine

Comme on a semble-t-il pas de solution simple pour récupérer ces historiques en git, et que perdre de l’histoire c’est toujours embêtant - sans parler du problème que cela peut poser dans la recherche de bugs, j’ai fait le test d’importer en git-svn les répertoires complets _squelettes_ et _plugins_ :

GitHub - Cerdic/spip-zone-squelettes: Backup de svn://zone.spip.org/spip-zone/_squelettes_
GitHub - Cerdic/spip-zone-plugins: Backup de svn://zone.spip.org/spip-zone/_plugins_

Je les ai mis sur mon compte le temps de tester mais on peut les migrer dans l’orga SPIP ensuite.

je pense que c'est une bonne idée, si on arrive à assurer la perenttié de ces 2 dépots.

Comme on a semble-t-il pas de solution simple pour récupérer ces historiques en git, et que perdre de l’histoire c’est toujours embêtant - sans parler du problème que cela peut poser dans la recherche de bugs, j’ai fait le test d’importer en git-svn les répertoires complets _squelettes_ et _plugins_ :

GitHub - Cerdic/spip-zone-squelettes: Backup de svn://zone.spip.org/spip-zone/_squelettes_
GitHub - Cerdic/spip-zone-plugins: Backup de svn://zone.spip.org/spip-zone/_plugins_

L’idée est de stocker ces 2 gros repos gitqui font ~3Go au total sur github pour pouvoir aller y piocher dedans l’historique en cas de besoin.

Il faut maintenant que chacun aille voir les repositories avec lesquels il est habitué à travailler et qui comptent pour lui, et regarde si l’historique est satisfaisant ou non, et si les morceaux plus anciens manquants sont bien retrouvable via les 2 projets archives sur github

J'ai regardé sur 2 plugins : macrosession et cachelab.
J'étais passé en trunk il y a longtemps et il y a eu beaucoup de commits dessus depuis.
Sur ces plugins et sur les repos github/Cerdic j'ai vu que l'historique s'arrêtait au passage en trunk,
pareil que sur git.spip.

Peut-être que malgré notre attention il reste des cas avec un historique tronqué qu’on peut réparer, je vous invite donc à nous faire remonter les cas les plus gênants pour vous qu’on regarde ça pour dire si oui ou non on peut faire mieux.

J'ai pas tout compris donc je ne sais pas si c'est normal ou pas...
Mais pour ces plugins en tout cas, ça remplit pas la fonction décrite de sauvegarde l'historique.

Concernant ces plugins en particulier ça ne me gênera pas pour la recherche de bug (yen a pas !)
mais ça doit peut être vous alerter sur ce qui a réellement été sauvegardé.
Et je comprend pas l'intérêt de faire un dépot à part sur github s'il a les mêmes limitations que git.spip

JL

Hop,

Yo,

> montre bien le premier commit de dépôt du plugin

Effectivement, as tu "forgé" l'url ou sinon comment y as tu navigué par clic ?

Le plus lointain que je remonte avec "Older" c'est à la création du trunk
qui ici correspond à un changement de nom

JL

Concernant macrosession :
on voit sur svn qu’il a été renommé depuis « visiteur » et c’est là que ça casse l’historique dans la migration vers git.spip.net
https://zone.spip.net/trac/spip-zone/log/spip-zone/plugins/macrosession/trunk?action=stop_on_copy&mode=follow_copy&rev=120891&stop_rev=&limit=100
Dans ce cas précis on peut refaire la migration en lui indiquant le repertoire visiteur comme une source supplémentaire et on aura tout l’historique

En l’occurence on retrouve ça sur le repo archive sur github
https://github.com/Cerdic/spip-zone-plugins/commit/6ab543c4f5a227036e8c23b6897c0fc29a732045#diff-e1bedf01fd9677717e509ee10cd33986

et partant de là on peut remonter à la suite de l’historique
https://github.com/Cerdic/spip-zone-plugins/commits/53e187fb48feabec84557e81c4401d66ed762c0e/visiteur
qui est donc bien archivé sur ce projet.

Le projet archive est migré via git-svn et non via subgit et comprend tout _plugins_ et non dossier par dossier.
C’est pour ça qu’il ne perd pas d’historique (sauf en cas de déplacement vers ou depuis _plugins_ donc)

Donc là si tu le veux on peut re-migrer macrosession avec l’historique complet

Concernant cachelab/ on peut voir sur l’historique SVN que là le passage en trunk n’a pas été fait dans les règles de l’art et on a perdu l’historique aussi sur le dossier (on ne peut pas suivre sur copie)
https://zone.spip.net/trac/spip-zone/log/spip-zone/plugins/cachelab/trunk?action=stop_on_copy&mode=follow_copy&rev=120891&stop_rev=&limit=100
mais il faut descendre dans les sous-dossier pour avoir l’historique
https://zone.spip.net/trac/spip-zone/changeset/111783/spip-zone/plugins/cachelab/trunk

là typiquement on saura pas récupérer plus d’historique sur git.spip.net

Par contre sur le github archive :
on a bien pareil
https://github.com/Cerdic/spip-zone-plugins/commits/master?after=456d769278f064515692af95345be608e747b4f9+69&path[]=cachelab&path[]=trunk
mais on peut remonter au commit précédent sur cachelab
https://github.com/Cerdic/spip-zone-plugins/commits/7196c31a006a5adaf950ffdae136b9b2d7e39920/cachelab

On a donc bien dans les 2 cas un historique complet dans le git archive sur github :slight_smile:

Bonjour

Je n'ai pas encore eu le temps de faire mes tests mais oui on devait
pouvoir avoir un git fusionné pre/post trunk pour les gros
historiques.

Km

En l’occurence on retrouve ça sur le repo archive sur github

> v0.6 : le plugin 'visiteur' devient 'macrosession' et #_VISITEUR devi… · Cerdic/spip-zone-plugins@6ab543c · GitHub
> et partant de là on peut remonter à la suite de l’historique
> https://github.com/Cerdic/spip-zone-plugins/commits/53e187fb48feabec84557e81c4401d66ed762c0e/visiteur
qui est donc bien archivé sur ce projet.

Justement, comment tu fais pour remonter à la suite ?
- Le lien "parent" amène sur un commit qui n'a rien a voir.
- rien d'utile ne se passe si je clique sur les noms des fichiers dans leur version "avant" dans le diff, dans l'espoir d'avoir plus d'infos ou de liens.

Donc là si tu le veux on peut re-migrer macrosession avec l’historique complet

Non moi je ne le demande pas.

> On a donc bien dans les 2 cas un historique complet dans le git archive sur github :slight_smile:

Tant mieux si c'est normal en l'état de la science.

JL

Re,

Oui le lien « parent » te remonte au commit précédent (qui n’a rien à voir mais osef), de là tu peux faire « browse » pour voir le repository dans cet état, et aller sur le dossier visiteurs/ et refaire « history »

Bon il faut un peu bidouiller avec l’outil mais au moins on retrouve tout...

Il me semble aussi, même si pas évident à faire.
Ce que je vois
1) un git svn sur la version pre trunk
2) un git svn sur la version post trunk
3) un rebase du 1) sur le 2) ou l'inverse, je ne sais plus

Après c'est sur que c'est galère et pas forcément automatisable car le process de migration pre/post trunk est pas uniforme

et pour les branches.... là je seche

En fait si c’était pas clair, plutôt que des plans sur la comètes de comment-on-pourrait-peut-être-faire-autrement-mais-c’est-à-voir ce qui serait utile c’est un feedback de là où en est :

Est-ce que c’est
[ ] acceptable
[ ] cratastrophique (avec plein de r)
[ ] ok a condition de corriger tel et tel répertoire ?
[ ] …

en fonction de ça on pourra voir si il faut s’user la santé à essayer de faire des acrobaties aériennes sans filet ou si bah on en reste là parce qu’on a aussi une vie à côté…

bah ma réponse est : acceptable et les gens qui veulent plus se debrouillent :slight_smile:

Oui le lien « parent » te remonte au commit précédent (qui n’a rien à voir mais osef), de là tu peux faire « browse » pour voir le repository dans cet état, et aller sur le dossier visiteurs/ et refaire « history »
Bon il faut un peu bidouiller avec l’outil mais au moins on retrouve tout...

OK.
JL

Hello :blush:

Franchement merci et super boulot !!! :blush:

Je ne suis pas sûr mais je crois qu’il y a un cas qui à été oublier :frowning:

Il y a des plugins sur la zone qui ont une branche dans plugins mais aussi dans grenier et des tags dans le dossier tags

Il y a aussi des plugins ( au moins un) qui ont changer de nom mais qui pourrait être, bien de mettre, dans l’historique du plug actuel ( https://plugins.spip.net/gestdoc.html qui est devenu https://plugins.spip.net/medias.html )

Le problème de ce plug, est qu’il a des branches et tags dans plusieurs endroits, dans https://zone.spip.net/trac/spip-zone/browser/spip-zone/grenier/gestion_documents mais aussi dans https://zone.spip.org/trac/spip-zone/browser/spip-zone/plugins/mediatheque des tags qui sont ici : https://zone.spip.org/trac/spip-zone/browser/spip-zone/tags/mediatheque et là https://zone.spip.org/trac/spip-zone/browser/spip-zone/tags/mediatheque_spip_2_0 et enfin la version la plus récente qui est dans les plugins-dist dans https://zone.spip.org/trac/spip-zone/browser/spip-zone/core

Bon, là, c’est le cas extrême et je ne suis pas certain du tout qui soit possible de faire en sorte de ne pas avoir de perte, bref, juste pour dire qu’il ne faut pas oublier grenier et le dossier tags

Franck