Quelle est la bonne façon de vérifier les données de validation dans Git?

13

Mon objectif est de vérifier les données de validation qui ne répondent pas à certaines exigences, puis de rejeter la validation en cours de création ou de la transmettre au référentiel distant.

Le problème de l'exécution d'un hook de pré-validation est qu'il est difficile à déployer pour de nombreuses personnes qui doivent mettre à jour manuellement leur fichier de hook de pré-validation. De plus, Git ne vous permet pas d'avoir des sous-modules dans le dossier .git, ce qui aurait été hélas très facile à déployer.

L'autre option que je vois consiste à vérifier, je crois, le crochet de mise à jour du côté distant, qui vérifiera chaque validation poussée par un développeur et rejettera la transmission si l'une des validations échoue aux tests.

Quelqu'un at-il une idée de ce problème? Et si oui, pourriez-vous me fournir ou me diriger vers un exemple de script de hook de mise à jour? Je suis un peu confus quant à la façon dont cela fonctionne.

Dalanmiller
la source
4
C'est une excellente première question.
Daenyth

Réponses:

7

vous devez d'abord déterminer si vous ne voulez pas que le code non qualifié soit validé ou repoussé / publié en amont.

à mon avis, le dernier est plus réalisable.

avec un DVCS comme git. vous ne voulez pas vraiment contrôler la façon dont chaque développeur utilise son référentiel local. et vous ne pouvez pas vraiment contrôler cela.

un hook de pré-validation fonctionne bien comme validation et nettoyage de base, si toutes les personnes impliquées l'acceptent volontairement. nous appliquons cela de manière souple dans notre entreprise. cependant, il peut toujours être ignoré avec git commit --no-verify.

Le crochet côté serveur, en revanche, n'intervient pas dans le flux de travail local d'un programmeur et s'assure que les autres membres du projet basent leur travail uniquement sur du code qui répond à certains critères. normalement, c'est ce que les gens recherchent lorsqu'ils mettent en œuvre des vérifications automatiques.

cette validation automatique n'est pas censée remplacer le contrôle de la qualité, je suppose, qui est généralement réalisé avec la révision du code ou la programmation par paire.

si vous êtes familier avec github , vous remarquerez que la "demande de tirage" est une autre approche de ce problème. de nombreux projets et entreprises open source utilisent la requête pull de github pour le contrôle des autorisations des succursales et la révision du code. mais il a besoin d'une interaction humaine, donc peut-être pas ce que vous demandez.

Huang Tao
la source
1

Comme vous l'avez déjà souligné, faire cela sur le client, bien que techniquement possible, n'est probablement pas pratique. De plus, de nombreux utilisateurs de git commettent un travail intérimaire, donc avoir des contrôles draconiens sur chaque validation est contre-productif.

La solution standard serait un crochet côté serveur. Vous auriez probablement mis en place un pre-receivehook, qui s'exécute à chaque fois qu'un push arrive, et qui peut rejeter le push s'il le souhaite. Le reste dépend des vérifications exactes que vous souhaitez effectuer.

Ceci est expliqué dans Pro Git , chapitre 7.3 Personnalisation de Git - Git Hooks .

sleske
la source
Merci pour votre réponse, et j'aime vraiment le nouveau site Web Git. Mon seul problème est qu'il est difficile de commencer à écrire vos propres hooks de validation, surtout parce que vous ne savez pas exactement où vous en êtes dans le processus et ce que vous devriez vérifier. Si j'essaie d'écrire un hook de pré-réception, dois-je supposer que la télécommande a une branche de suivi de ce que je pousse? Comment puis-je savoir? Je souhaite qu'il y ait une sorte de fonctionnalité de git qui vous permettrait de simuler ce que vous avez à ce moment-là.
dalanmiller