Comment puis-je convertir toutes les fins de ligne en CRLF, LF ou CR pendant les opérations SVN

StackOverflow https://stackoverflow.com/questions/15687

  •  08-06-2019
  •  | 
  •  

Question

Donc, vous êtes tous prêts à faire un gros SVN Commit et ça bombarde parce que vous avez des fins de ligne incohérentes dans certains de vos fichiers.Ce qui est amusant, c'est que vous consultez des milliers de fichiers répartis sur des dizaines de dossiers de différentes profondeurs.

Que fais-tu?

Était-ce utile?

La solution

Je ne pense pas que pré-engagement hook peut en fait modifier les données en cours de validation - il peut interdire une validation, mais je ne pense pas qu'il puisse effectuer la conversion à votre place.

On dirait que tu veux le propriété 'svn:eol-style' défini sur 'native' - cela convertira automatiquement les nouvelles lignes en tout ce qui est utilisé sur votre plate-forme (utilisez 'CRLF', 'CR' ou 'LF' pour les obtenir, indépendamment de ce que veut le système d'exploitation).

Vous pouvez utiliser propriétés automatiques afin que tous les futurs fichiers que vous créez auront cette propriété définie (les accessoires automatiques sont gérés côté client, vous devrez donc configurer cela pour chaque utilisateur).

Autres conseils

La première consiste à tout nettoyer.Êtes-vous sous Windows ou Unix/Linux/Mac ?

Si vous êtes sous Unix/Linux/Mac, vous pouvez essayer quelque chose comme ceci :

$ find . -type f -name "*.java" -exec dos2unix {}\;

C'est si tu as dos2unix sur votre boîte.Ce n'est pas sur mon Mac ni sur aucune des six machines Linux dont nous disposons.On dirait que nous n'avons pas installé ce package particulier.Heureusement, c'est assez facile à trouver.

Soyez prudent en l'utilisant car vous ne voulez pas modifier les fichiers binaires.

Une fois que vous avez tout nettoyé, vous devez mettre le svn:eol-style propriété sur vos fichiers.Le régler sur indigène extraira le fichier avec la fin de ligne correcte pour votre machine, mais les stockera au format de fin de ligne Unix.Les trois autres options sont "LF" pour Unix, "CRLF" pour Windows et "CR" pour les Mac antérieurs à Mac OS X.La plupart des gens trouvent « natifs » pour s'entraîner au mieux.Le seul problème avec Native est qu'il n'archivera pas un fichier avec des fins de ligne mixtes alors que "LF" et "CRLF" le feront.

Une fois que vous avez fait cela, vous devriez obtenir un hook de pré-validation cela vous permettra d'appliquer les fins de ligne sur des fichiers particuliers.Ensuite, apprenez à vos développeurs à utiliser propriétés automobiles.Le hook de pré-commit empêchera toute validation à moins que la propriété ne soit placée dans le fichier. Un développeur voit sa validation rejetée une ou deux fois et il configurera lui-même les propriétés automatiques.

Ajouter un hook de pré-validation qui analyse le contenu du fichier et effectue la fusion de CRLF/LF/CR/etc pour vous avant qu'il ne soit écrit sur SVN.

Vous pouvez envisager d'utiliser une commande comme celle de Linux dos2unix pour la conversion.Étant une commande Linux, il est facile de l'utiliser en mode batch avec des scripts etc.Je ne sais pas s'il existe un équivalent pour d'autres systèmes d'exploitation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top