[spip-dev] Cloner tout git.spip.net

Hello,

c’est un besoin un peu à la marge mais qui existe :
comment avoir une copie de tous les repos de git.spip.net en local pour faire des recherche dans la base de code par exemple ?

C’est maintenant possible avec le script mirror.php que vous trouverez là
https://git.spip.net/spip-contrib-outils/gitea_mirror

Le script veille à ne pas charger le serveur inutilement : les appels à l’API gitea sont mis en cache et seuls les repositories modifiés depuis le dernier appel sont pull à nouveau.
Il peut donc être utilisé sans crainte de charger git.spip.net :slight_smile:
(il n’y a que le premier clone complet qui génère vraiment une charge)

Ça va s’avérer être très pratique, merci :slight_smile:

Ah super, j'étais en train de coder ça dans mon coin aussi.

Avec un cache, c'est parfait, merci.

Et ça devrait peser moins lourd que la zone en svn avec tous ses tags maintenant :slight_smile:

Salut

Un clone git complet est plus lourd que son pendant svn.

~119Go (dont 4go pour spip et dist) vs ~6Go (zone et dist)

Autrement 2 astuces pour avoir des infos plus complètes sur ses copies git

Pour avoir les infos svn dans les commits git (à condition d’avoir un dépot suivi sur svn)


fetch = +refs/svn/map:refs/notes/commits

Pour suivre localement les PR

`fetch = +refs/pull//head:refs/remotes/origin/pr/```

Km

Salut

Un clone git complet est plus lourd que son pendant svn.

~119Go (dont 4go pour spip et dist) vs ~6Go (zone et dist)

On ne doit pas parler de la même chose, j'ai tout cloné et ça pèse 1.6Go

Autrement 2 astuces pour avoir des infos plus complètes sur ses copies git

Pour avoir les infos svn dans les commits git (à condition d'avoir un dépot suivi sur svn)

>>

>fetch = +refs/svn/map:refs/notes/commits |

Pour suivre localement les PR

>fetch = +refs/pull/*/head:refs/remotes/origin/pr/*|||

Pas mal, merci du tuyau, je note ça.

Merci, ça marche super bien.

Une suggestion : l'ajout d'un .gitignore pour le cache et les dossiers créés pour chaque orga, je sais pas ce que tu en penses.

Sinon, j'avais des erreurs quand j'ai lancé le script, que je n'ai pas vues au départ : il m'affichait la liste des 1196 dépots en erreur, parce que je n'avais pas checkout.php dans mon PATH.
Mais avec 1196 lignes d'erreurs affichées je n'avais pas vu les messages indiquant que checkout n'était pas trouvé.

Peut être indiquer dans le readme qu'il faut installer checkout ? ou bien vérifier qu'il est bien installé ?

Ah oui le .gitignore j’y ai pensé et puis j’ai oublié parce que chez moi je clone à coté (j’ai mis un lien symbolique sur le mirror.php), mais je pense que ce serait bien en effet.

Et oui pour ajouter une ligne dans le readme a propos de checkout.php j’avais oublié ça aussi

Merci à toi !

Hello,

Les script crée un dossier cache et un dossier par répos des orgas dans son propre répertoire, donc ça ajoute des fichiers non gérés qu'il vaut mieux ignorer.

Juste parce que je suis pas sûr d'avoir tout compris : non gérés par quoi ? Car tous ces fichiers sont *à l'extérieur* de chaque dépôt Git non ?

À moins qu'on parle de transformer soi-même l'ensemble immense en un autre dépôt Git perso contenant tout ?

Tu as testé gitea_mirror ? tu devrais, tu comprendrais mieux.

Une fois que tu l'as cloné et que tu le lances, il crée un cache et télécharge tout par défaut dans son propre répertoire, ce qui crée plein de fichiers (toute la zone) qui sont untracked.
Si tu fais un git status, tu t'en rends compte tout de suite.

Ah oui le .gitignore j’y ai pensé et puis j’ai oublié parce que chez moi je clone à coté (j’ai mis un lien symbolique sur le mirror.php), mais je pense que ce serait bien en effet.

Pour info :

(ton README était en iso-8859)

Et oui pour ajouter une ligne dans le readme a propos de checkout.php j’avais oublié ça aussi

J'ai pas mis à jour le README mais je propose un test :

On peut faire du ssh et du https ?

Là ça utilise clone_url de la réponse de l’API, qui est une url https, mais il y a une autre entrée qui donne l’url ssh, donc on pourrait ajouter une option pour cloner tout en ssh

Fais-toi plaisir ! :slight_smile:

Yep,

Ah ouais, direct dans le lard, sans PR :slight_smile: