Подтвердить что ты не робот

Каков наилучший способ иметь svn: eol-style = native для текстовых файлов по умолчанию?

Я нахожу, что лучше всего, чтобы все текстовые файлы имели свойство svn:eol-style=native. Но какой самый эффективный способ сделать это?

Я разрабатываю программы в основном на Windows (используя командную строку TortoiseSVN и svn.exe) и иногда пишу переносные библиотеки C/С++ для Windows и Linux. Чтобы предотвратить неприятный микс-CR, проблему LF в моих исходных файлах, я думаю, что svn:eol-style=native должен быть "по умолчанию", но, к сожалению, это не так.

Я знаю, что в Redbook Red Book, что настройка [auto-props] в ~/.subversion/config или %APPDATA%\Subversion\config помогает, однако, это зависит от клиента. Как насчет того, что какой-нибудь разработчик в моей команде забыл настроить эти файлы конфигурации (подумайте о разработчике на нескольких виртуальных машинах)? Даже все помнят, что, если возникает какой-то новый тип расширения имени файла? Как правильно распространить это изменение на весь файл конфигурации на всех машинах dev в моей команде?

Все кажется громоздким процессом.

4b9b3361

Ответ 1

Subversion 1.8 way

Поскольку Subversion 1.8 получил конфигурацию с репозиторией, прописанную (RDC), для обязательного, используя общие настройки all клиентов для данного репозитория свойство может и должно быть настроено в корне репозитория (или магистрали)

Ответ 2

Как насчет того, что какой-нибудь разработчик в моей команде забыл настроить эти настройки файлов (подумайте о dev на нескольких виртуальных машинах)?

Просто исправить ошибку.

Если вы обнаружили файл, который был неправильно установлен, его не так сложно исправить. Сначала измените файл на правильный стиль окончания строки для вашей платформы. Любой редактор программ должен иметь возможность переключать стили с помощью некоторой встроенной команды, или вы можете использовать утилиту 'fromdos' или 'todos'. После исправления установите свойство и проверьте его:

 svn propset svn:eol-style native filename
 svn commit filename

Копия моего комментария:

Еще одно предложение - использовать pre-commit hook, проверить svn: настройки стиля eol (и наличие) и исправить при необходимости

Ответ 3

Это должен быть быстрый ответ, а не "погрузиться в детали и получить его сами, вот ссылка".

Мы просто сделаем это, хорошо? Для subversion 1.8 +:

$ cd my_checkout_dir

$ svn propset svn:auto-props '
### src
*.c = svn:eol-style=native
*.cpp = svn:eol-style=native
*.h = svn:eol-style=native
*.pch = svn:eol-style=native
*.lua = svn:eol-style=native
*.py = svn:eol-style=native
*.pl = svn:eol-style=native
*.txt = svn:eol-style=native
*.sh = svn:eol-style=native;svn:executable
### ui
*.xib = svn:eol-style=native
*.ui = svn:eol-style=native
*.qrc = svn:eol-style=native
### project
*.pro = svn:eol-style=native
*.pbxproj = svn:eol-style=native
*.json = svn:eol-style=native
*.xcworkspacedata = svn:eol-style=native
*.plist = svn:eol-style=native
' .

$ svn commit -m 'Got really tired of svn:eol-style issues'

Обратите внимание на закрытие одиночной кавычки и точки (т.е. текущий каталог) в конце. Настройте этот список для своих нужд, скопируйте svn propset svn:auto-props '…' . в sh-terminal unix/msys (да, с Enters). После фиксации все файлы ниже my_checkout_dir наследуют соответствующие свойства при добавлении. Файлы добавлены до, это действие будет не изменено. Как вы видите в *.sh и ниже, вы можете добавить дополнительные свойства через ;. Если вы хотите изменить список, просто повторите все снова.

Ниже приведены значения по умолчанию, предложенные svn в моей ~/.subversion/config для ссылки:

### The format of the entries is:
###   file-name-pattern = propname[=value][;propname[=value]...]
### The file-name-pattern can contain wildcards (such as '*' and
### '?').  All entries which match (case-insensitively) will be
### applied to the file.  Note that auto-props functionality
### must be enabled, which is typically done by setting the
### 'enable-auto-props' option.
# *.c = svn:eol-style=native
# *.cpp = svn:eol-style=native
# *.h = svn:keywords=Author Date Id Rev URL;svn:eol-style=native
# *.dsp = svn:eol-style=CRLF
# *.dsw = svn:eol-style=CRLF
# *.sh = svn:eol-style=native;svn:executable
# *.txt = svn:eol-style=native;svn:keywords=Author Date Id Rev URL;
# *.png = svn:mime-type=image/png
# *.jpg = svn:mime-type=image/jpeg
# Makefile = svn:eol-style=native