в Bash и Linux

Ошибка при svn-commit «svn: File has inconsistent newlines»

Пытался коммитить стороннюю библиотеку в репозитарий проекта и наткнулся на упорное нежелание SVN принимать новый код.

  1. svn: File ‘/Users/rassol/Sites/engine.local/httpdocs/Lib/DaBase/Original/Collection.php’ has inconsistent newlines

Смысл ошибки понятен. Но вот решение нашлось не сразу.

Сначала я попробовал привести в порядок файлы через Aptana Studio, в котором собственно и происходила работа.
Для очистки и форматирования файлов в Aptana (да и в Eclipse тоже) есть специальная команда Source->Cleanup Document. Печально, но тамошний конвертер строк не сработал — svn по-прежнему ругался и не давал сделать коммит.
Тогда пришёл на помощь Bash:

  1. #! /bin/sh
  2. for x
  3. do
  4. echo "Converting $x"
  5. tr -d \015′ < "$x" > "tmp.$x"
  6. mv "tmp.$x" "$x"
  7. done

Этот текст копируем в файлик, файлик ложим в PATH (например в папку ~/.bin, в файл convert_lines.sh), даем права на исполнение командой

  1. sudo chmod a+x ~/.bin/convert_lines.sh

Затем переходим в папку с нашими болезненными файлами и запускаем скрипт

  1. sh ~/.bin/convert_lines.sh *.php

Вуаля. Коммит проходит нормально, можно спокойно идти спать.

  • Евгений Петлер

    если svn на винде, мне помог способ такой:
    если клиент SmartSVN, заходим во вкладку Project—>Settings—>EOL-Style—>и выбираем радио батн As is (no conversion) и комитит без проблем