Как получить полное сообщение о фиксации SVN в окне Bat? - PullRequest
2 голосов
/ 09 октября 2009

Мне нужно получить сообщение фиксации SVN в ловушке после фиксации в Windows, поэтому я делаю это:

FOR /F "tokens=*" %%a in ('"svnlook log %1 -r %2"') do @SET MSG=%%a

Я проверяю, в большинстве случаев это нормально.

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

Как получить полное сообщение коммита в переменной bat?

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

В зависимости от типа или формата сообщений фиксации, может быть также предпочтительнее сохранить переводы строки; это можно сделать с помощью этого:

set newline=^


setlocal ENABLEDELAYEDEXPANSION

Обратите внимание, что для новой строки требуются пустые строки, как и ENABLEDELAYEDEXPANSION (один раз, в любом месте перед использованием !newline!).

Теперь вы можете использовать это для объединения сообщений (пропуская пустые строки, кстати) с новой строкой, а затем обрезая первую новую строку:

FOR /F "tokens=*" %%a in ('"svnlook log %1 -r %2"') do @SET MSG=!MSG!!newline!%%a
@SET MSG=!MSG:~1!
1 голос
/ 09 октября 2009

FOR /F работает над строками на входе. Попробуйте изменить @SET MSG=%%a на @SET MSG=!MSG! %%a.

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