2008-09-07 5 views
7

Je me demandais si quelqu'un ici avait de l'expérience dans l'écriture de ce type de script et s'il pouvait me donner des pointeurs.Comment implémenter un script hook pre-commit dans SVN qui appelle dos2unix pour valider le fichier enregistré

Je voudrais modifier ce script pour valider que le fichier d'enregistrement n'a pas de retour chariot dans le formatage EOL. Le format EOL est CR LF sous Windows et LF sous Unix. Lorsqu'un utilisateur enregistre son code au format Windows. Il ne compile plus sous Unix. Je sais que cela peut être fait du côté du client, mais j'ai besoin que cette validation soit faite côté serveur. Pour ce faire, je dois faire ce qui suit:

1) Assurez-vous que le fichier que je vérifie n'est pas un binaire, je ne sais pas comment le faire avec svnlook, devrais-je vérifier le mime: type du fichier? Le Red Book ne l'indique pas clairement ou je ne l'ai pas vu.

2) Je voudrais exécuter la commande dos2unix pour valider que le fichier a le bon format EOL. Je comparerais la sortie de la commande dos2unix au fichier d'origine. S'il y a un diff entre les deux, je donne un message d'erreur au client et j'annule l'enregistrement.

J'aimerais avoir vos commentaires/commentaires sur cette approche.

Répondre

4

Je pense que vous pouvez éviter un commit script hook dans ce cas en utilisant la propriété svn:eol-style comme décrit dans le SVNBook:

De cette façon SVN peut s'inquiéter de vos fins de ligne pour vous.

Bonne chance!

+0

Merci Stephen, j'ai implémenté la propriété svn: eol-style sur tous mes fichiers source au lieu d'utiliser des hooks pré-commit –

+0

À quoi l'avez-vous configuré? 'native' ou' LF'? Quel est le réglage par défaut si svn: eol-style n'a pas été défini? – EoghanM

1

Qu'essayez-vous exactement de faire?

Bien sûr, il y a de nombreux endroits pour en apprendre davantage sur svn crochets pré-COMMIT (par exemple here, here, et dans le Red Book) mais cela dépend de ce que vous essayez de faire et ce qui est disponible sur votre système.

Pouvez-vous être plus précis?

Questions connexes