2 votes

Est-il possible de restreindre un git push en fonction de sa taille ?

J'ai un dépôt git sur le serveur distant. Lorsque mes utilisateurs font "git push" vers ce serveur distant, je veux restreindre le push en fonction de sa taille. Disons que si la taille du push dépasse 100MB, le push doit être arrêté.

J'essaie de le faire en utilisant le hook de pré-réception sur le dépôt git distant.

Il y a des questions connexes avec quelques solutions dans stackoverflow.com. Je les ai essayées. Mais, elles ne fonctionnent pas toutes à partir du référentiel distant.

Quelqu'un peut-il m'aider ?

0voto

Jefromi Points 127932

Vous ne pouvez pas faire ça. Au moment où les hooks de pré-réception et de mise à jour sont exécutés, le pack (toutes les données) a déjà été reçu. Tout ce qui reste à faire est de mettre à jour les références, et c'est ce que le hook vous permet d'interrompre. Extrait de la page de manuel :

Juste avant de commencer à mettre à jour les références sur le référentiel distant, le hook de pré-réception est invoqué.

Et il y a une déclaration identique concernant le crochet de mise à jour.

Je ne suis même pas sûr que, pour un mécanisme de transport général, même git receive-pack connaît la taille finale de tout ce qu'il va recevoir.

Mais quel problème essayez-vous de résoudre ? Éviter aux utilisateurs des poussées fastidieuses ? (Ils peuvent les annuler eux-mêmes ; c'est assez évident du côté de l'utilisateur.) Maîtriser l'espace disque sur la télécommande ? Dans la plupart des cas, vous pouvez probablement limiter l'accès aux utilisateurs dont vous pouvez être sûr qu'ils ne vont pas tout gâcher, et traiter les exceptions manuellement.

Si vous devez absolument le faire, la seule façon de le faire est d'envelopper le push du côté de l'utilisateur, de sorte qu'il exécute my-push qui, d'une manière ou d'une autre, estime la taille de ce qu'ils sont sur le point de pousser, et décide de le pousser ou non - mais on en revient alors à faire confiance aux utilisateurs, puisque s'ils n'utilisent pas ce wrapper, ils peuvent pousser ce qu'ils veulent.

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