64 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как поменять в проектах концы строк с CRLF на LF

InterMaster.com.ru

О бизнесе в интернете, отдыхе в реале и просто о жизни…

Как я меняю в проектах концы строк с CRLF на LF

Иногда бывает такая ситуация – получаешь от заказчика движок для его дальнейшего «допиливания». Пытаешься положить его в репозиторий Git – и получаешь кучу варнингов типа:

Это понятно — файлы в исходнике писались/правились до меня разными людьми и на разных операционных системах. Поэтому в файлах наблюдается полная мешанина в вопросе формата окончания строк.

Небольшая справка для тех, кто не в курсе. В разных операционных системах принят разный формат символов, обозначающий перевод строк:

  • Windows — rn или CRLF (код 0D0A)
  • Unix — n или LF (код 0A)
  • Mac — r или CR (код 0D).

Такую разносортицу в своем проекте мне держать не хочется, поэтому я предпочитаю перед началом работ приводить все окончания строк к единому виду — n, он же LF. Почему так? Большинство серверов работают под управлением систем на базе Unix, поэтому, на мой взгляд, логично использовать nix’овые окончания строк и для файлов движка сайта.

Теперь опишу свой способ приведения конца строк к единому виду. Описывать работу буду на примере графической оболочки Git – Git GUI. Так проще и нагляднее.

  1. Кладу все файлы движка в папку – например, Original.
  2. Удаляю всякие временные файлы и прочий мусор.
  3. В пустые папки, которые тем не менее необходимы для работы сайта, кладу файл readme.txt. Это надо по той причине, что Git отслеживает только файлы, а не папки. Поэтому если закоммитить в Git движок с пустыми папками, то потом при выгрузке движка этих пустых, но нужных папок мы не увидим.
  4. Открываю пункт меню «Редактировать» -> «Настройки» и указываю имя пользователя, email и кодировку файлов проекта.
  5. В файлах настроек Git – gitconfig — для параметра core прописываю:
    • autocrlf = input
    • safecrlf = warn

или выполнить команды:

  • $ git config —global core.autocrlf input
  • $ git config —global core.safecrlf warn

Первый параметр дает команду Git заменить все окончания строк с CRLF в LF при записи в репозиторий.

Второй – выдает предупреждения о конвертации специфических бинарников, если вдруг такие окажутся в движке.

  • Теперь записываю все файлы движка в репозиторий. В итоге в репозитории все файлы будут иметь концы строк LF или CR (т.к. Git сконвертировал только CRLF в LF, преобразование CR->LF от не выполняет).
  • Запускаю Git GUI, выбираю «Склонировать существующий репозиторий».
  • В строке «Исходное положение» указываю папку Original.
  • В строке «Каталог назначения» указываю полный пусть к папке, в которую я хочу скопировать репозиторий из папки Original. В данном случае я указал папку Target. Важно: папки с таким именем на диске быть не должно. Git GUI создаст ее сам.
  • Выбираю «Полная копия».
  • Жму «Склонировать».
    1. В результате этой манипуляции у нас на диске C появилась папка Target, в которой лежат файлы из репозитория папки Original. Т.е. в папке Target все концы строк приведены к формату LF или CR.
    2. Заходим в папку Target, видим в ней папку .git – удаляем эту папку.

    1. Открываем редактор Notepad++, выбираем пункт меню «Вид» -> «Отображение символов» -> отмечаем «Отображать символ Конец строки». Теперь редактор будет нам показывать символы конца строк.

    1. Выбираем пункт меню «Поиск» -> «Искать в файлах». В настройках поиска выбираем:
      • Режим поиска – Расширенный
      • Папка – C:Target
      • Найти — r

    1. В итоге мы найдем все файлы, которые имеют концы строк в формате Mac, т.е.r или CR. Вряд ли их будет много, но иногда встречаются. Открываем каждый файл по очереди в том же редакторе Notepad++. Мы сможем визуально увидеть, что у файла концы строк в формате Mac:

    1. Преобразуем его в Unix формат. Выбираем «Правка» -> «Формат Конца Строк» -> «Преобразовать в UNIX-формат»

    1. В итоге файл преобразуется в UNIX-формат.

    1. Сохраняем файл и выполняем аналогичное преобразование для всех оставшихся файлов в формате Mac. В итоге в папке Target мы будем иметь движок, все файлы которого будут иметь конец строк Unix-формата LF.

    Теперь движок можно класть в репозиторий Git. И не забудьте в редакторе, которым выпотом будете править файлы, выставить по умолчанию концовку строк LF, чтобы опять не возникла мешанина.

    Еще записи по теме

    Такую петлю через git пришлось делать потому что CRLF концов много? Если я правильно понял, во всех файлах можно было сделать «Правка» -> «Формат Конца Строк» -> «Преобразовать в Win-формат»

    Admin: да, можно в каждом файле отдельно формат концов строк поменять. Но т.к. файлов очень много, то пока не придумал ничего лучше такого вот «пакетного» изменения сразу во всех файлах.

    Спасибо. Долго искал. Изощрённый метод однако

    Как раз с данной ошибкой (LF will be replaced by CRLF ) столкнулся, но смотрю что в Нетбинсе «Правка»->»Замена», выбираем что регулярка и пишем с rn на n и оно во всех файлах приведет к линуксовскому виду, ну типа того что вы добились гитом

    Все тоже самое что и в статье, только проще, в Notepad++

    CTRL-F >> ‘Найти в файлах’

    1. Выбираем ‘Режим поиска’ >> ‘Расширенный’

    2. В поле ‘Папка’ выбираем папку с проектом

    3. В поле ‘Найти’ пишем ‘rn’

    4. В поле ‘Заменить на’ пишем ‘n’

    5. Жмем ‘Заменить в файлах’

    6. После замены возвращаемся к шагу #3 и пишем ‘r’, жмем заменить

    LF будет заменен CRLF в git — что это такое и важно? [дубликат]

    Возможные Дубликаты:
    git замена LF на CRLF

    когда я создаю новое приложение rails, я вижу предупреждение в git о замене LF. Я делаю ГИТ инит git add .

    а потом бум! Я вижу, что это всплывает почти для всех файлов. Обычно я просто продолжаю создавать свое приложение, и оно исчезает после многих изменений в файлах.

    пример:

    файл будет иметь исходные окончания строк в вашем рабочем каталоге. предупреждение: LF будет заменен CRLF в Gemfile.

    файл будет иметь исходные окончания строк в вашем рабочем каталоге. предупреждение: LF будет заменен CRLF в Gemfile.замок.

    файл будет иметь исходные окончания строк в вашем рабочем каталоге. предупреждение: LF будет заменен CRLF в README.

    в чем разница между LF и Эти символы не экранируются?

    должен ли я беспокоиться об этом в долгосрочной перспективе или просто игнорировать его и продолжать идти, как я обычно делаю?

    2 ответов

    в системах Unix конец строки представлен лентой (LF). В windows строка представлена с возвратом каретки (CR) и подачей строки (LF) таким образом (CRLF). когда вы получаете код от git, который был загружен из системы unix, у них будет только LF.

    если вы хотите отключить это предупреждение, введите это в командной строке git

    если вы хотите принять разумное решение, как git должен справиться с этим,читать документацию

    форматирование и пробелы

    форматирование и пробелы являются одними из наиболее неприятных и тонкие проблемы, с которыми сталкиваются многие разработчики при совместной работе, особенно кросс-платформенный. Это очень легко для патчей или других совместная работа по внесению тонких изменений пробелов, потому что Редакторы молча представить их, и если ваши файлы когда-либо коснуться Системы Windows, их линия окончания могут быть заменены. В Git есть несколько параметры конфигурации для решения этих проблем.

    если вы программируете на Windows и работаете с людьми, которые не являются (или наоборот), вы, вероятно, столкнетесь с проблемами с окончанием строки в некоторых точка. Это связано с тем, что Windows использует оба символа возврата каретки и символ linefeed для новых строк в своих файлах, тогда как Mac и В системах Linux используется только символ перевода строки. Это тонкое но невероятно раздражает факт кросс-платформенной работы; многие редакторы Windows автоматически заменяет существующие окончания строк в стиле LF на CRLF или вставьте оба символа конца строки, когда пользователь нажимает клавишу enter.

    Git может отрегулировать это автоматическ-преобразовывать линии окончаний CRLF в LF когда добавить файл в индекс, и наоборот, когда он проверяет код в вашу файловую систему. Вы можете включить эту функцию с ядро.установка autocrlf. Если вы находитесь на машине Windows, установите значение true – этот преобразует окончания LF в CRLF при проверке кода:

    если вы находитесь в системе Linux или Mac, которая использует окончания строк LF, то вы не хочу, чтобы Git автоматически конвертировал их при проверке файлов; однако, если файл с окончаниями CRLF случайно вводится, тогда Вам может понадобиться Git, чтобы исправить это. Вы можете сказать Git преобразовать CRLF в LF на фиксации, но не наоборот, установив core.autocrlf в ввод:

    настройка следует оставить вас с окончаниями CRLF в проверках Windows, но LF заканчивается на системах Mac и Linux и в репозитории.

    если вы программист Windows, выполняющий проект только для Windows, то вы смогите повернуть эту функциональность, записывая возвращения экипажа в репозиторий, установив значение конфигурации в false:

    LF будет заменен CRLF в git — что это такое и важно ли это? [дубликат]

    когда я создаю новое приложение rails, я вижу предупреждение в git о замене LF. Я делаю git init git add .

    а потом бум! Я вижу, что это всплывает почти для всех файлов. Обычно я просто продолжаю работать и создаю свое приложение, и оно исчезает после многих изменений в файлах.

    пример:

    файл будет иметь исходные окончания строк в вашем рабочем каталоге. предупреждение: LF будет заменен CRLF в Gemfile.

    файл будет иметь исходные окончания строк в вашем рабочем каталоге. предупреждение: LF будет заменен CRLF в Gemfile.замок.

    файл будет иметь исходные окончания строк в вашем рабочем каталоге. предупреждение: LF будет заменен CRLF в README.

    в чем разница между LF и Эти символы не экранируются?

    должен ли я беспокоиться об этом в долгосрочной перспективе или просто игнорировать его и продолжать идти, как я обычно делаю?

    2 ответов:

    в системах Unix конец строки представляется с подачей строки (LF). В windows строка представляется с возвратом каретки (CR) и подачей строки (LF) таким образом (CRLF). когда вы получаете код от git, который был загружен из системы unix, у них будет только LF.

    если вы хотите отключить это предупреждение, введите его в командной строке git

    если вы хотите принять разумное решение, как git должен справиться с этим,читать документацию

    форматирование и пробелы

    форматирование и пробелы проблемы являются одними из наиболее неприятных и тонкие проблемы, с которыми сталкиваются многие разработчики при совместной работе, особенно кросс-платформенный. Это очень легко для патчей или других совместная работа по внедрению тонких изменений пробелов, потому что Редакторы молча представляют их, и если ваши файлы когда-либо касались Системы Windows, их линия окончания могут быть заменены. В Git есть несколько параметры конфигурации, чтобы помочь с этими проблемами.

    если вы программируете на Windows и работаете с людьми, которые не являются (или наоборот), вы, вероятно, столкнетесь с проблемами с окончанием строки в некоторых случаях точка. Это связано с тем, что Windows использует оба символа возврата каретки и символ перевода строки для новых строк в своих файлах, тогда как Mac и В системах Linux используется только символ перевода строки. Это тонкий, но невероятно раздражает факт кросс-платформенной работы; многие редакторы на Windows молча заменяет существующие окончания линий в стиле LF на CRLF, или вставьте оба символа конца строки, когда пользователь нажимает клавишу enter.

    Git может справиться с этим путем автоматического преобразования окончаний CRLF линии в LF, когда добавить файл в индекс, и наоборот, когда он проверяет код на вашу файловую систему. Вы можете включить эту функцию с ядро.установка autocrlf. Если вы находитесь на компьютере с Windows, установите для него значение true – этот преобразует LF концовки в CRLF, когда вы проверяете код:

    если вы находитесь в системе Linux или Mac, которая использует LF-окончания строк, то вы не хочу, чтобы Git автоматически конвертировал их при извлечении файлов; однако, если файл с окончаниями CRLF случайно вводится, тогда Вам может понадобиться Git, чтобы исправить это. Вы можете сказать, Git, чтобы преобразовать переводы строк в LF на фиксации, но не наоборот, установив ядро.autocrlf to вход:

    настройка должен оставить вас с окончаниями CRLF в Windows checkouts, но LF-окончания на системах Mac и Linux и в репозитории.

    если вы программист Windows, выполняющий проект только для Windows, то вы можно отключить эту функцию, записывая возврат каретки в репозиторий, установив значение конфигурации в false:

    Читать еще:  Как уменьшить вес фотографии в программе Фоторедактор Movavi
    Ссылка на основную публикацию
    Статьи c упоминанием слов:
    Adblock
    detector