Как я могу преобразовать все окончания строк в CRLF, LF или CR во время операций SVN

StackOverflow https://stackoverflow.com/questions/15687

  •  08-06-2019
  •  | 
  •  

Вопрос

Итак, вы все готовы выполнить большой коммит SVN, и он взрывается, потому что у вас несовместимые окончания строк в некоторых ваших файлах.Самое интересное, что вы просматриваете 1000 файлов, расположенных в десятках папок разной глубины.

Чем вы занимаетесь?

Это было полезно?

Решение

Я не думаю, что предварительная фиксация hook действительно может изменять фиксируемые данные - он может запретить фиксацию, но я не думаю, что он сможет выполнить преобразование за вас.

Это звучит так, как будто ты хочешь собственность 'svn: eol-style' имеет значение 'native' - это автоматически преобразует новые строки во все, что используется на вашей платформе (используйте 'CRLF', 'CR' или 'LF', чтобы получить их независимо от того, что хочет ОС).

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

Другие советы

Во-первых, нужно все привести в порядок.Вы используете Windows или Unix / Linux / Mac?

Если вы используете Unix / Linux / Mac, вы можете попробовать что-то вроде этого:

$ find . -type f -name "*.java" -exec dos2unix {}\;

Это если у вас есть dos2unix на твоей коробке.Этого нет ни на моем Mac, ни на какой-либо из шести наших Linux-машин.Похоже, мы не устанавливали этот конкретный пакет.К счастью, его достаточно легко найти.

Будьте осторожны, используя его, потому что вы не хотите перегружать двоичные файлы.

Как только вы все уберете, вам следует положить svn:eol-style собственность на ваши файлы.Устанавливаем его на родной извлечет файл с правильным окончанием строки для вашего компьютера, но сохранит их в формате окончания строки Unix.Другими тремя параметрами являются "LF" для Unix, "CRLF" для Windows и "CR" для компьютеров Mac до Mac OS X.Большинство людей считают, что "туземец" работает лучше всего.Единственная проблема с Native заключается в том, что он не будет проверять файл со смешанными окончаниями строк, в то время как "LF" и "CRLF" будут.

Как только вы это сделаете, вы должны получить крюк предварительной фиксации это позволит вам принудительно использовать окончания строк для определенных файлов.Затем научите своих разработчиков использовать автоматические свойства.Перехват предварительной фиксации предотвратит любые коммиты, если только свойство не будет помещено в файл, разработчик отклонит свой коммит один или два раза, и они самостоятельно настроят автоматические свойства.

Добавить крюк предварительной фиксации который анализирует содержимое файла и выполняет обработку CRLF / LF / CR / etc для вас, прежде чем оно будет записано в SVN.

Вы можете рассмотреть возможность использования команды, подобной Linux dos2unix для преобразования.Поскольку это команда Linux, ее легко использовать в пакетном режиме со скриптами и т.д.Я не знаю, существует ли эквивалент для других операционных систем.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top