SVN: «Несовместимый стиль окончания строки» - намеренно проверять файл с помощью ^ M - PullRequest
6 голосов
/ 07 октября 2009

Использование svn версии 1.3.1 (невозможно выполнить обновление из-за сервера CM с управлением конфигурацией) в CentOS 4.2.

В моем коде (скрипте bash) определенно есть ^ M по важной причине. К сожалению, Subversion не позволяет мне проверить этот файл. Он жалуется, что:

svn: коммит не выполнен (подробности следуют):
svn: несовместимый стиль окончания строки
svn: Ваше сообщение о коммите было оставлено во временном файле:

Я доказал, что удаление одиночного ^ M из моего кода позволяет проверить его. Как мне сообщить Subversion, что ^ M является преднамеренным и что он должен разрешить проверку файла?

Ответы [ 5 ]

10 голосов
/ 07 октября 2009

Вам необходимо удалить свойство svn: eol-style из вашего файла. Subversion не заботился об окончаниях строк в вашем файле, пока не было добавлено это свойство. Процитирую книгу о подрывной деятельности :

Это означает, что по умолчанию Subversion не обращает внимания на тип маркеров конца строки (EOL), используемых в ваши файлы.

Затем в книге описывается, как вы можете позаботиться о подрывной деятельности об окончаниях строк, установив svn:eol-style, что именно то, что вы не хотите.

1 голос
/ 07 октября 2009

Другой подход заключается в том, чтобы избавиться от управляющего символа в программе в первую очередь; это может иметь другие преимущества совместимости и избежать проблем с редактированием в будущем.

Вы можете легко создать \r в bash с помощью

`printf '%b' '\015'`

Так, например:

$ echo abc`printf %b '\015'`def
def
$ 

Или:

$ c=`printf %b '\015'`
$ set | grep ^c=
c=$'\r'
$ 

( Примечание: Я знаю, что есть более простые способы, чем вызов printf. К сожалению, эти более простые способы отличаются в оболочках bash и posix. Решение только для bash весьма неплохо: $'\r'. Ash -Только еще приятнее: c='\r. Я не уверен, что ash делает это, потому что это пепел или потому что это посикс.)

0 голосов
/ 07 октября 2009

Я думаю, вам нужно использовать свойство svn:eol-style:

svn propset svn:eol-style LF myscript.sh

приведет к тому, что Subversion всегда будет обрабатывать файл как конец строки в стиле LF.

0 голосов
/ 07 октября 2009

Я думаю, вы можете установить для свойства svn: mime-type что-нибудь, не основанное на тексте (например, application / octet-stream?). Это может заставить subversion игнорировать окончания строки.

Взгляните на раздел Тип содержимого файла svnbook.

0 голосов
/ 07 октября 2009

Я предполагаю, что он используется как строка или что-то в этом роде. Разве в bash нет способа кодировать символы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...