Nouvelles lignes Eclipse et Windows

182

J'ai dû déplacer mon espace de travail Eclipse de Linux vers Windows lorsque mon bureau s'est écrasé. Une semaine plus tard, je le recopie sous Linux, je code joyeusement, je m'engage sur CVS. Et hélas, les nouvelles lignes de Windows ont pollué de nombreux fichiers, donc CVS ​​diff vide le fichier entier, même lorsque j'ai changé une ligne ou deux!

Je pourrais préparer un script, mais je me demande s'il va gâcher mes fichiers de projet Eclipse.

Vasu
la source
1
Pour convertir les fins de ligne de quelques / tous les fichiers d'un projet en quelques clics: stackoverflow.com/a/7019737/1364747
Teddy

Réponses:

358

Comme mentionné ici et ici :

Définissez le codage des fichiers UTF-8et les fins de ligne pour les nouveaux fichiers sous Unix, de sorte que les fichiers texte soient enregistrés dans un format qui n'est pas spécifique au système d'exploitation Windows et plus facilement partagés sur des bureaux de développement hétérogènes:

  • Accédez aux préférences de l'espace de travail (Général: Espace de travail)
  • Remplacez le codage du fichier texte par UTF-8
  • Remplacez le séparateur de ligne du nouveau fichier texte par Autre et choisissez Unix dans la liste de sélection

texte alternatif

  • Remarque: pour convertir les fins de ligne d'un fichier existant, ouvrez le fichier dans Eclipse et choisissez File : Convert Line Delimiters to : Unix

Astuce : vous pouvez facilement convertir un fichier existant en sélectionnant puis dans l'Explorateur de packages, puis en allant à l'entrée de menuFile : Convert Line Delimiters to : Unix

VonC
la source
2
C'est exactement ce que je cherchais! Je l'avais déjà changé pour de nouveaux fichiers, mais l'option de conversion - m'a manqué les yeux. Merci VonC!
Vasu
@Vasu: de rien :). La vue Structure et l'Explorateur de packages contiennent certaines fonctionnalités pour les éléments à sélection multiple qui sont souvent négligées.
VonC
Grande rédaction. Rechercher cela moi-même dans le dialogue horriblement labyrinthique des préférences d'Eclipse me rendait fou.
Cerin
39
Si vous choisissez un projet entier dans l'explorateur de packages, vous pouvez utiliser la File : Convert Line Delimiters to : Unixcommande pour "réparer" tous les fichiers du projet à la fois.
Tal Weiss
11

J'ai eu les mêmes fichiers pollués par éclipse même avec un changement de ligne. Solution: Paramètres git Eclipse -> Ajouter une entrée: Clé: core.autocrlf Valeurs: true

entrez la description de l'image ici

entrez la description de l'image ici

user988282
la source
Bien que ce soit une solution acceptable dans la plupart des cas, cela peut vous mordre - par exemple lorsque vous calculez des sommes de contrôle sur des fichiers source. Celles-ci différeront alors d'une plateforme à l'autre.
zb226
8

Il existe un utilitaire bash pratique - dos2unix- qui est un convertisseur de format de fichier texte DOS / MAC vers UNIX, qui, s'il n'est pas déjà installé sur votre distribution, devrait pouvoir être facilement installé via un gestionnaire de paquets. Page de manuel dos2unix

Ben Hayden
la source
J'avais l'intention d'écrire un script pour le faire de manière récursive sur mon espace de travail éclipse. Le seul souci était de corrompre les fichiers de projet internes d'Eclipse. Merci pour votre suggestion!
Vasu
7

En plus des solutions Eclipse et de l'outil mentionnés dans une autre réponse , pensez à flip . Il peut «basculer» dans les deux sens entre les sauts de ligne normaux et Windows, et fait de bonnes choses comme préserver l'horodatage du fichier et d'autres statistiques.

Vous pouvez l'utiliser comme ceci pour résoudre votre problème:

find . -type f -not -path './.git/*' -exec flip -u {} \;

(J'ai mis une clause pour ignorer votre répertoire .git, au cas où vous utiliseriez git, mais comme flip ignore les fichiers binaires par défaut, vous n'en aurez peut-être pas besoin.)

Michael Scheper
la source
Juste une note ... cette commande est destinée aux utilisateurs Linux, pas aux utilisateurs Windows. Windows findne fonctionne pas de cette façon.
Brad
@Brad a raison. Cependant, il existe un portage Cygwin de flip: github.com/jaalto/cygwin-package--flip
Michael Scheper
3

Vous pouvez essayer. Le problème est que Windows insère un retour chariot ainsi qu'un saut de ligne lorsqu'il reçoit une nouvelle ligne. Les systèmes Unix insèrent simplement un saut de ligne. Ainsi, le caractère de retour chariot supplémentaire pourrait être la raison pour laquelle votre éclipse gâche les nouvelles lignes.

Récupérez un ou deux fichiers de votre projet et convertissez-les. Vous pouvez utiliser Notepad ++ pour ce faire. Ouvrez simplement le fichier, allez dans Format-> Convertir en Unix (lorsque vous utilisez Windows).

Sous Linux, essayez simplement ceci sur une ligne de commande:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java
Jambon Vocke
la source
J'ai environ 10k fichiers! Il fallait donc l'automatiser d'une manière ou d'une autre. Merci pour le conseil!
Vasu
Une erreur de frappe sur votre CLI: sed -i 's/$`echo \\\r`//' yourfile.javaet pour l'automatiserfind . -name "*.java" -exec sed -i 's/$`echo \\\r`//' {} \;
pdem
3

Pour supprimer récursivement les retours chariot ( \r) des fichiers CVS / * dans tous les répertoires enfants, exécutez ce qui suit dans un shell unix:

find ./ -wholename "\*CVS/[RE]\*" -exec dos2unix -q -o {} \;
Gabe
la source