2 votes

hook git pre-receive pour rejeter force mais autoriser force-with-lease push

Est-il possible de créer un hook git pré-réception côté serveur pour rejeter le push avec --force mais ne pas rejeter la poussée avec --force-with-lease ?

1voto

bk2204 Points 6334

Il n'y a aucun moyen de le faire car ils sont identiques au serveur.

La mise à jour d'une référence Git fonctionne de la manière suivante : le client demande au serveur de mettre à jour une référence donnée d'une ancienne valeur à une nouvelle valeur. Du côté du serveur, Git peut dire si l'ancienne valeur est un ancêtre de la nouvelle valeur (un push normal) ou non (un push forcé), et agir en conséquence. Cependant, dans les deux cas, l'ancienne valeur doit correspondre à la valeur actuelle sur le serveur ; si ce n'est pas le cas, la mise à jour de la référence échouera, car cela signifie que vous avez fait la course avec quelqu'un d'autre qui est en train de pousser.

Dans la plupart des cas, lorsque vous faites une mise à jour de la référence avec --force l'ancienne valeur est celle annoncée par le serveur dans son annonce de référence. Ce que --force-with-lease fait est qu'il demande à Git de spécifier l'ancienne valeur non pas à partir de ce que le serveur a annoncé, mais à partir de la branche de suivi à distance ou de la valeur spécifiée par l'utilisateur. Cependant, le serveur ne sait pas que l'utilisateur a spécifié cette option. Tout ce qu'il sait, c'est si l'ancienne valeur correspond (ce qui est toujours nécessaire) et s'il s'agit d'un parent de la nouvelle valeur (dans ce cas, il s'agit d'un forçage).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X