web-dev-qa-db-fra.com

Cauchemar "style de fin de ligne incohérent"

Je suis complètement coincé avec une erreur SVN lorsque je commets 2447 fichiers à la fois. J'utilise TortoiseSVN (dernière version) sur Windows 7 64bits.

Le fait est que certains fichiers ont été créés sur Mac et d’autres sur PC. TortoiseSVN a donc stoppé la validation avec une erreur Inconsistent line ending style gênante.

Au début, pour résoudre ce problème, j’ai ouvert manuellement le fichier incriminé dans netbeans , j’ai ajouté un espace, puis je l’ai supprimé et sauvegardé afin que Netbeans convertisse correctement tous les caractères de fin de ligne, fichiers "incriminés.

Bien sûr, j'ai cherché une solution sur le Web, mais je n'ai trouvé aucune solution adaptée à l'environnement Windows.

Je frappe actuellement la tête contre les murs.

17
Epoc

Sous Windows 7, vous pouvez utiliser Notepad++ v5.6.8 pour convertir EOL.

Édition -> Conversion EOL -> Windows/Unix/Mac

23
Tuan Dang

Dans le Bloc-notes ++, sélectionnez "Affichage -> Afficher le symbole -> Afficher la fin de ligne".

Dans la zone de recherche (Ctrl + F), sélectionnez le mode de recherche Expression régulière et recherchez la chaîne:

[^\r]\n $

(traduction:\n sans a\r avant lui).

Cela vous apportera directement la ou les lignes problématiques où vous verrez la ligne se terminant par LF plutôt que par la paire CR-LF

3
Dror Harari

Je réponds donc à ma propre question avec la réponse de @ assylias :

Vous pouvez capturer le w: (\w)\n$ et le remplacer par $1\r\n, où $1 est le caractère.

Rechercher et remplacer avec Netbeans avec cette expression rationnelle fait le travail.

Edit: mon problème était qu’un script personnalisé insérait de mauvais caractères EOL (\n au lieu de \r\n) dans ces fichiers)

3
Epoc

Si vos fins de ligne sont toutes en ordre, il se peut que votre fichier texte ait une marque d'ordre (BOM) UTF16.

Vous pouvez résoudre ce problème en utilisant Notepad ++. Encodage -> Convertir en UTF-8.

2
jla

Dans Vim ou GVim sous Windows, les fichiers cassés affichaient tous ^M à la fin de chaque ligne.

Pour résoudre ce problème: :s/\r//g pour supprimer les fins de ligne supplémentaires brisées.

0
Fabian Streitel

En ce qui concerne la publication juste au-dessus, l'expression rationnelle vim devrait être :1,$s/\r//g. Une autre façon d'utiliser * n? X consiste à sed:

sed -i '-es/\ r // g' 

0
Rolland Dudemaine

Pour résoudre le problème avec différentes fins de ligne, vous pouvez définir la propriété SVN comme suit:

svn propset svn: mon_fichier natif de style eol

Même si cela résoudra les problèmes de fin de ligne et facilitera la fusion, cela signifiera que le blâme indiquera à la personne qui ajoute le style eol comme changeur de toutes les lignes et que vos fichiers de travail finiront par être copiés dans un dossier temporaire. quand on fait un diff.

Le problème de la faute peut être résolu par la suite en procédant comme suit:

svn blame my_file -x "--ignore-space-change --ignore-eol-style"

0
Curg