Можно ли принудительно вывести "svnlook cat" во время транзакции коммита?
При написании ловушки pre-commit для subversion я нахожусь в ситуации, когда мой вызов svnlook
как
MESSAGE=`svnlook cat -t $TXN $REPOS $FILE`
возвращает возвращаемое значение, которое состоит из одной непрерывной строки вместо правильно отформатированных файлов, которые были изменены при попытке фиксации. Это проблематично, потому что форматирование источника важно для компиляции. Есть идеи, почему все заканчивается одной строкой? Я что-то пропустил?
2 ответа
Форматирование все еще там, но исчезает, когда вы пытаетесь использовать $MESSAGE
некотируемый. Оболочка преобразует все последовательности пробелов в один пробел, если только он не защищен кавычками. Чтобы привести пример:
$ var='foo
bar'
$ echo $var
> foo bar
$ echo "$var"
> foo
> bar
Я просто столкнулся с той же проблемой при условии, что окончания строк в файле состоят из одного CR (0x0D). Хорошо работает с LF (0x0A) и CRLF (0x0D0A). Командная оболочка cat имеет ту же проблему.
Редактировать: если используется в Perl-скрипте, результатом будет одна непрерывная строка. При прямом использовании в командной строке оболочки вся строка вертикально смешивается в одну короткую строку. Строго технический, это правильный результат - без перевода строки, только возврат каретки. Но это не имеет большого практического значения.