2009-12-11 6 views
159

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 copie sur Linux, code heureusement, je m'engage à CVS. Et hélas, les fenêtres newlines ont pollué de nombreux fichiers, donc le diff CVS vide le fichier entier, même quand j'ai changé une ligne ou deux!Nouvelles lignes Eclipse et Windows

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

+0

Pour convertir les fins de ligne pour quelques/tous les fichiers dans un projet avec quelques-uns clics: https://stackoverflow.com/a/7019737/1364747 – Teddy

Répondre

322

Comme mentionné here et here:

Set fichier codage UTF-8 et fins de ligne pour les nouveaux fichiers à Unix, de sorte que les fichiers texte sont enregistrés dans un format non spécifique au système d'exploitation Windows et plus facilement partagés entre les bureaux de développement hétérogènes:

  • Naviguer aux préférences de l'espace de travail (Généralités: Espace de travail)
  • Modifier le texte de codage du fichier à UTF-8
  • Modifier le nouveau fichier texte Ligne délimiteur Autres et choisissez Unix dans la liste de sélection

alt text

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

Conseil: Vous pouvez facilement convertir le fichier existant en sélectionnant puis dans l'explorateur de paquet, puis allez à l'entrée de menu File : Convert Line Delimiters to : Unix

+2

Cest exactement ce que je cherchais! Je l'avais déjà changé pour de nouveaux fichiers, mais l'option pour convertir - a manqué mes yeux. Merci VonC! – Vasu

+0

@Vasu: vous êtes les bienvenus :). La vue Structure et l'Explorateur de packages contiennent certaines fonctionnalités pour les éléments multi-sélectionnés qui sont souvent ignorés. – VonC

+0

Super écrit. La rechercher moi-même à travers la boîte de dialogue des préférences horriblement labyrinthiques d'Eclipse me rendait fou. – Cerin

3

Vous pourriez faire un essai. Le problème est que Windows insère un retour chariot ainsi qu'un saut de ligne lors de l'attribution d'une nouvelle ligne. Les systèmes Unix insèrent juste un saut de ligne. Le caractère de retour chariot peut donc être la raison pour laquelle votre éclipse perturbe les sauts de ligne. Prenez un ou deux fichiers à partir de votre projet et convertissez-les en un ou deux fichiers. Vous pouvez utiliser Notepad ++ pour le faire. Il suffit d'ouvrir le fichier, allez dans Format-> Convertir en Unix (lorsque vous utilisez Windows).

Dans Linux juste essayer ceci sur une ligne de commande:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java 
+0

J'ai environ 10k fichiers! Donc a dû l'automatiser en quelque sorte. Merci pour le conseil! – Vasu

+0

Une faute de frappe sur votre CLI: '' sed -i 's/$ 'echo \\\ r' //' votrefichier.java'' et pour l'automatiser' 'trouver. -name "* .java" -exec sed -i 's/$ 'echo \\\ r' //' {} \; '' – pdem

7

Il y a un utilitaire bash pratique - dos2unix - qui est un DOS/MAC convertisseur de format de fichier texte UNIX, que si pas déjà installé sur votre distro, devrait pouvoir être facilement installé via un gestionnaire de paquets. dos2unix man page

+0

J'avais prévu d'écrire un script pour le faire récursivement sur mon espace de travail Eclipse. Le seul souci était de corrompre les fichiers de projet internes d'Eclipse. Merci pour votre suggestion! – Vasu

3

Pour supprimer récursive les retours chariot (\r) à partir des fichiers CVS/* dans tous les enfants répertoires, exécutez la commande suivante dans un shell unix:

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

en plus des solutions Eclipse et l'outil mentionné dans another answer, pensez flip. Il peut «flip» de toute façon entre les sauts de ligne normaux et Windows, et fait de belles 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 {} \; 

(je mets dans une clause d'ignorer votre répertoire .git, dans le cas où vous utilisez git, mais puisque chiquenaude ignore les fichiers binaires par défaut, vous n'avez peut-être pas besoin de cela.)

+0

Juste une note ... cette commande est pour les utilisateurs de Linux, pas les utilisateurs de Windows. Windows 'find' ne fonctionne pas de cette façon. – Brad

+0

@Brad est correct. Cependant, il existe un port de flip Cygwin: https://github.com/jaalto/cygwin-package--flip/ –

8

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

enter image description here

enter image description here

Questions connexes