Eclipse и Windows newlines

Мне пришлось переместить мое рабочее пространство Eclipse из Linux в Windows, когда мой рабочий стол вышел из строя. Неделю спустя я копирую его обратно в Linux, к счастью, пишу в CVS. И увы, новые строки Windows загрязнили многие файлы, поэтому CVS diff создает дамп всего файла, даже если я изменил одну или две строки!

Я мог бы подготовить сценарий, но мне интересно, не испортит ли он мои файлы проекта Eclipse.

6 ответов

Решение

Как уже упоминалось здесь и здесь:

Установите кодировку файла на UTF-8 и окончания строк для новых файлов в Unix, так что текстовые файлы сохраняются в формате, который не является специфичным для ОС Windows и наиболее легко распространяются среди разнородных рабочих столов разработчиков:

  • Перейдите к настройкам Рабочей области (Общие: Рабочая область)
  • Измените кодировку текстового файла на UTF-8
  • Измените разделитель строки нового текстового файла на Другое и выберите Unix из списка выбора

альтернативный текст

  • Примечание: чтобы преобразовать окончания строк существующего файла, откройте файл в Eclipse и выберите File : Convert Line Delimiters to : Unix

Совет: Вы можете легко преобразовать существующий файл, выбрав его в Package Explorer, а затем перейдя к пункту меню. File : Convert Line Delimiters to : Unix

У меня были такие же, затмеваемые файлы даже при смене одной строки. Решение: Eclipse git settings -> Добавить запись: Ключ: core.autocrlf Значения: true

Есть удобная утилита bash - dos2unix - конвертер форматов текстовых файлов DOS/MAC в UNIX, который, если он еще не установлен в вашем дистрибутиве, можно легко установить через менеджер пакетов. Страница man dos2unix

В дополнение к решениям Eclipse и инструменту, упомянутому в другом ответе, рассмотрите флип. Он может "переворачиваться" в любом случае между обычным переводом строки и переводом строки в Windows, и делает такие приятные вещи, как сохранение метки времени файла и другой статистики.

Вы можете использовать это так, чтобы решить вашу проблему:

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

(Я добавляю пункт, чтобы игнорировать ваш каталог.git, если вы используете git, но поскольку flip игнорирует двоичные файлы по умолчанию, вам это может не понадобиться.)

Для рекурсивного удаления каретки возвращается (\r) из файлов CVS/* во всех дочерних каталогах запустите следующее в оболочке unix:

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

Вы можете попробовать. Проблема состоит в том, что Windows вставляет возврат каретки, а также перевод строки при вводе новой строки. Unix-системы просто вставляют перевод строки. Таким образом, дополнительный символ возврата каретки может быть причиной того, что ваше затмение портится с символами новой строки.

Возьмите один или два файла из вашего проекта и конвертируйте их. Вы можете использовать Notepad++ для этого. Просто откройте файл, перейдите в Format->Convert to Unix (когда вы используете Windows).

В Linux просто попробуйте это в командной строке:

sed 's/$'"/`echo \\\r`/" yourfile.java > output.java
Другие вопросы по тегам