Можно ли заставить svnlook cat выводить правильно отформатированный текст во время фиксации транзакции?

При написании хука перед фиксацией для подрывной деятельности я оказался в ситуации, когда мой вызов svnlook as

MESSAGE=`svnlook cat -t $TXN $REPOS $FILE`

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


person panagioti    schedule 13.10.2010    source источник


Ответы (2)


Форматирование по-прежнему присутствует, но исчезает, когда вы пытаетесь использовать $MESSAGE без кавычек. Оболочка преобразует все последовательности пробелов в один пробел, если он не защищен кавычками. Чтобы привести пример:

$ var='foo
  bar'
$ echo $var
> foo bar
$ echo "$var"
> foo
> bar
person schot    schedule 14.10.2010

Я только что столкнулся с той же проблемой при условии, что окончания строк в файле состоят из одного CR (0x0D). Он хорошо работает с LF (0x0A) и CRLF (0x0D0A). Та же проблема с командой оболочки cat.

Редактировать: при использовании в Perl-скрипте результатом будет одна непрерывная строка. При использовании непосредственно в командной строке оболочки вся строка вертикально смешивается в одну короткую строку. Строго технический, это правильный результат - никаких переводов строки, только возврат каретки. Но особого практического значения это не имеет.

person catcr    schedule 22.10.2010