Salvatore bégaie

Depuis une semaine nous avons tous les jours la notification de ce commit (et d’un autre) [Salvatore] [source:ecrire/lang/ spip] Export depuis https://trad.spip.net de la langue en · 37d1a6c82d - spip - SPIP on GIT
Au moins là on est notifié :slight_smile:

Tiens… qu’est-ce qu’il se passe encore ’

Bien je ne sais pas… la seule chose qu’on ait faite, c’est mettre à jour le site trad.spip et ses plugins dans la nouvelle version de SPIP, mais je ne vois pas de rapport évident.

Je peux même dire que du point de vue de nos scripts, le commit est bien passé

2024-01-03 01:30:01: [master 37d1a6c82] [Salvatore] [source:ecrire/lang/ spip] Export depuis https://trad.spip.net de la langue en
[...]
2024-01-03 01:30:05: To https://git.spip.net/spip/spip.git
2024-01-03 01:30:05:    c05affcd4..37d1a6c82  master -> master
2024-01-03 01:30:05: Module spip OK

Donc ça veut dire que les commits de salvatore ne sont plus dans master ? Et ça semble être le cas depuis 4 mois cf https://git.spip.net/spip/spip/commits/branch/master/ecrire/lang

Bonjour

Je regarde ce qu’il en est coté gitea.
J’ai stoppé certains hooks l’autre jour suite aux remontées des lenteurs constatées lors des git push.
C’était dû au miroir github en mise à jour synchrone. Et par effet de bord j’ai retiré tous les hooks non identifiés.
Peut être que salvatore en fait partie, il a un accès spécifique pour faire ses commits.

Et que vois-tu donc ? Parce que… ce n’est pas le seul problème sur spip/spip

Bonjour

Pour le bégaiement en terme de mail, je ne trouve qu’une notification partant vers la liste. J’essaye de voir plus en détail mais sur ce point dans l’immédiat j’ai l’impression que c’est hors de mon périmètre.

J’ai modifié le comportement du cache coté gitea, qui peut dans certains cas être non synchrone entre les commits réels et leur affichage

L’affichage semble cohérent avec ce que je vois sur le depot git. J’ai bien comme dernier commit 183b9d9743cfb356fbc10c06482f73acf4c03ccd pour ecrire/lang

Il y a un temps le script faisait un git push --force c’était la cause de la perte de certains commits.
1/ J’ai en théorie bloqué les force sur les branches main et master, mais je n’ai pu tester si les comptes administrateur outrepassent cette règle.
2/ Je viens de basculer ce profil dans un groupe « bot » avec des droits généraux d’écriture. Cela devrait réduire leur autorisation de base.

Je regarde dans les historiques si je peux avoir plus de de détail sur les actions réalisées sur le dépôt par les bots.

Bonjour

Je constate un truc étrange, j’ai l’impression que salvatore dépend du compte marcimat

Le commit Salvatore est bien présent :

Mais de ce que je vois il est lié à la branche pull/5812/head

Ce qui est cohérent avec ce qui est indiqué plus haut par @marcimat

Mais cela ne semble pas cohérent avec la PR 5812 qui semble pointer sur autre chose

Tu vois cela où ? le parent est toujours le dernier commit de master pourtant sur [Salvatore] [source:ecrire/lang/ spip] Export depuis https://trad.spip.net de la langue en · 37d1a6c82d - spip - SPIP on GIT

Hello

Il y a eu une actualisation … Dans la cascade de dépendance a changé. On vois que le parent est maintenant basé sur master et non plus pull/5812/head

Pour moi il y a bien des push --force dans l’historique :
Si je prends le reflog du serveur :

c2652d58d9 (HEAD -> master) HEAD@{0}: update by push
c2652d58d9 (HEAD -> master) HEAD@{0}: update by push
c2652d58d9 (HEAD -> master) HEAD@{1}: update by push
[...]
c2652d58d9 (HEAD -> master) HEAD@{52}: update by push
a584be8e85 HEAD@{53}: push
1c8dbcaf8e HEAD@{54}: push
c2652d58d9 (HEAD -> master) HEAD@{55}: update by push
[...]

Je modifie la configuration pour bloquer le push --force depuis les hooks. Cela devrait bloquer peut importe le statut du profil utilisateur.

Ce n’est pas salvatore qui envoie des push --force alors c’est qui ?

Perso je ne l’avais jamais vu sur pull/5812/head quelque soit le moment où j’avais regardé

Bon dans tous les cas j’ai déployé un hook sur update qui interdit tous les non fast forward (dont les --force)
Si ça essaye d’envoyer du force ça devrait être bloqué

Je me base sur How to use the update hook

Sur toutes les branches ??

Hello

Pour le suivi, vu qu’une partie a été discutée sur IRC.
Le script a été adapté pour essayer de prendre en compte le --force[-with-lease]

Du point de vu du serveur, on ne sait pas qu’on force les commits. On précise juste au serveur qu’on veut pousser un commit dont le parent diverge de celui de référence. (dit autrement no fast forward).

Dans le cas d’un force-with-lease, on peut faire une grossière approximation en considérant que l’auteur est le même entre les 2 commits.
Mais je crains que ça revalide la cas initial où on essaye de protéger de certains push force non identifié.

Il faudrait probablement affiner en ciblant spécifiquement les branches de type PR (non main/master), à affiner selon les retours.

On a aussi constaté qu’un script salvatore a été modifié courant décembre, à voir si cela peut avoir un impact ou non.

  • tu ajoutes des hook en affirmant que Salvatore ferait des --force, ce qui n’est pas le cas. Alors d’où viennent ils s’il y a effectivement des --force qui passent ? Est-ce une action de Gitea ?
  • aussi, des PR de spip/spip sont en erreur «Cette demande de fusion est impossible par manque d’informations de bifurcation. » suite à leur rebase. Est-ce qu’on peut savoir ce qu’il se passe ? (je t’assure que ça ne vient pas de la façon dont on fait les commits… push, force, peut importe, y a pas de raison…)
  • on a tenté des merges de PR (depuis Gitea) qui ont été déclaré fusionnées dans master (en voyant passer les notifs), qui n’y apparaissent finalement pas… Ça n’a pas à voir avec Salvatore là du coup… Est-ce qu’on a une idée de ce qu’il se passe là aussi ?

Ça fait beaucoup de soucis je trouve :confused:

Les fichiers de crons qui ont été déplacés ; les scripts derrière n’ont pas bougé, et ils sont toujours sur trad-lang/spip-cli at master - trad-lang - SPIP on GIT

Hello

Non je n’affirme rien concernant Salvatore, je n’ai aucune idée de comment il fonctionne.
Ma seule affirmation est un git push --force-[with-lease] a lieu, ni plus ni moins. C’est ce qu’indique le reflog précédent.
Coté serveur on ne peut connaitre la nature du force, c’est uniquenet un no fast forward qui est envoyé.

La dernière fois qu’on a eu ce problème, c’était l’IDE d’un des contributeurs qui avait la fonctionnalité --force d’active par défaut.

Gitea de son coté ne force rien il réceptionne les commits et les affiche. Sur ce cas de figure en l’état je vois qui incrimine directement un comportement de la forge.
Je rappelle que la configuration de la forge voulue par la communauté, c’est un mode open bar de type administrateur.
Par conséquent tous les profils team peuvent faire ce qu’il veulent sur les dépots. Gitea acceptera sans broncher. N’importe quel compte de l’organisation peut être à l’origine du problème.

Concernant les 2 points concernant les PR, c’est à mon avis l’effet de bord du premier point. Vu qu’un force a lieu les commits des PR et autres deviennent orphelins.

De ce que je vois en regardant les différents point abordé, je retombe souvent sur le commit orphelin build: ecrire/boostrap/config doit être présent dans le zip généré par Composer · c2652d58d9 - spip - SPIP on GIT qui devrait être sur master de ce que j’ai suivi.
Les PR/commits suivants s’appuyant dessus, sont de même orphelins.

En l’état ce que j’ai fait/proposé c’est de mettre une rustine de type hook, pour réduire les effet d’un push force. Ce hook restreint fortement les push peu importe la provenance des contributions.
La seule exception à cette interdiction est le fait que le commit source serveur et local soit du même auteur. Ce qui permet d’accepter le cas classique du force-with-lease. (Mais avec plein d’effet de bord comme expliqué plus tôt)

Grâce au reflog je peux « restaurer » les commits orphelins et via la base de donnée indiquer les informations de commits actualisées.

Il vient de la PR suivante, mergée avec Gitea : #5817 - build: ecrire/boostrap/config doit être présent dans le zip généré par Composer - spip - SPIP on GIT
En quoi il serait orphelin ?

Oui, et pour moi c’est un problème effectivement que ce soit open-bar… D’ailleurs on en avait discuté en juillet pour revoir ça (réduire la liste des personnes pouvant commiter dessus)… mais bon…

En tout cas, est-ce que là on peut merger des PR de nouveau ? on a le feu vert ?
En plus il faut qu’on rattrape celles qui se sont mal passé…

J’essayais de cherry-pick pour refaire une branche de la PR #5819 - fix: HTML valide pour le formulaire `configurer_redacteurs` - spip - SPIP on GIT
Et en fait, impossible de récupérer les commits en local !

Que ce soit git fetch ou checkout…

git pull

git show 5ace3dd0c96d896924240c0275da7725244e8aca                                                                                                                               
> fatal : bad object 5ace3dd0c96d896924240c0275da7725244e8aca

# OK je n’ai pas cette référence en local… je la récupère
git fetch origin 5ace3dd0c96d896924240c0275da7725244e8aca                                                                                                                        
> erreur : Le serveur n'autorise pas de requête pour l'objet 5ace3dd0c96d896924240c0275da7725244e8aca non annoncé

Le commit est là fix: HTML valide pour le formulaire `configurer_redacteurs` · 5ace3dd0c9 - spip - SPIP on GIT et on le voit aussi dans le graph https://git.spip.net/spip/spip/graph

Je ne vois pas ce que je fais mal !

Hello

Là je ne matrise plus assez les arcanes de git, mais comme ils sont orphelins coté serveur, je ne pense pas qu’ils soient disponibles à distance.
Je dois pouvoir le faire en direct sur le dépot soit en faisant un clone serveur pour avoir les objets.

Peux tu me confirmer que :

Est ce qu’il y en a d’autres PR ?

Mais Salvatore, il n’y a rien à rejouer, les commits sont arrivés dans master hier midi. C’est bon.

Pour les PR.

  • Non #5817 est aussi dans master.
  • Là il y a #5819 à reprendre oui, mais je peux le faire en exportant les .patch depuis Gitea aussi. Je vais le faire comme cela.

Et pour info sur d’autres lieux j’ai déjà récupéré des commits orphelins via la procédure du dessus, je ne sais pas pourquoi ça bloque ici.