Ответ 1
Как использовать параметр -F
для получения сообщения журнала из файла?
Затем вы можете сделать это (untested):
ECHO Commit by: firstuser>SvnLog.txt
ECHO Bug track: 9283>>SvnLog.txt
SVN COMMIT -F SvnLog.txt
Я хотел бы сделать
svn commit -m "<message>"
Но сообщение должно иметь две строки:
Commit by: firstuser
Bug track: 9283
Как добавить новый символ строки в сообщение? Я пробовал SHIFT + ENTER, CTRL + T, но он не работает. Я использую командную строку MS cmd.
Как использовать параметр -F
для получения сообщения журнала из файла?
Затем вы можете сделать это (untested):
ECHO Commit by: firstuser>SvnLog.txt
ECHO Bug track: 9283>>SvnLog.txt
SVN COMMIT -F SvnLog.txt
Я нашел ответ на Serverfault:
svn ci -m $'This is the first line\nThis is the second line'
По-видимому, это проблема с оболочкой.
Чтобы создать новую строку в svn-сообщении, лучшим способом является афория с дополнительным файлом-сообщением.
Но это можно сделать также с помощью -m
Пример с пакетным файлом
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set lf=^
rem ** Two empty lines are neccessary for creating the Linefeed
svn commit -m "A!lf!Message!lf!with!LF!newline"
Вы также можете использовать его в командной строке
svn commit -m ^"This is a^
MORE?
MORE?my newline"
У меня была такая же проблема, и хотя ответ Claes Mogren не работает с cmd.exe, это заставило меня подумать, есть ли в Windows оболочка, которая может это сделать.
И, конечно же, есть... PowerShell.
Используя оболочку PowerShell, вы можете добиться этого, используя следующую команду:
svn ci -m "reference to Ninject fixed`nsome ignores added"
Обратите внимание на комбинацию backqoute и n в сообщении
`n
Просто напишите svn ci -m "old line
нажмите Enter, затем введите следующую строку new line"
Это намного проще, чем использование файла.
Вы можете определить новую строку следующим образом:
set newline=^& echo.
Затем вы можете использовать новую строку в других операторах, например: (без кавычек)
echo This is the first line%newline%This is the second line
echo "This is the first line"%newline%"This is the second line"
или с дополнительной кареткой, например:
set text=This is the first line^%newline%This is the second line
Возможно, вы можете играть с этим, но помните о комбинации с кавычками!
Я использую следующий метод, и он работает:
svn commit {list of files to commit}
После ввода вышеуказанной команды и нажатия клавиши ввода откроется редактор. Напишите свой комментарий там и выйдите из редактора. После выхода из редактора команда commit будет выполнена, и все, что вы написали в редакторе, также будет выполнено.
Проблема заключается в том, что "enter" (Ascii 13) отправляет команду. Итак, вам нужна "новая линия"
используйте alt + 10 (нажмите alt, введите номер в числовом блоке, отпустите alt)
Это работает для нас:
закрытый статический окончательный char LF = (char) 13;
setMessage("Test" + LF + "Jij" + LF + "Dit" + LF + "Effe");
Напишите сообщение в текстовом редакторе и просто скопируйте его и вставьте в терминал (редактор команд).
Просто введите текст в текстовом редакторе в нескольких строках.
-m "Строка сообщений
Строка сообщения 2
Строка сообщения 3 "
Введите требуемую команду в редакторе команд.
Команда svn
Скопируйте и вставьте содержимое сообщения из текстового редактора в редактор команд.
svn command -m "Строка сообщения 1.
Строка сообщения 2
Строка сообщения 3 "
4. Выполните ввод.
5.It works:)
Дополнительный пример к ответу @jeb
ответ:
set br= ^
<</br (newline)>>
<</br>>
пример:
@echo off
setlocal enableExtensions enableDelayedExpansion
rem cd /D "%~dp0"
set br= ^
rem br, can't be saved to a var. by using %..%;
set "t=t1!br!t2!br!t3"
for /f "usebackq tokens=* delims=" %%q in ('!t!') do (
echo %%q
)
:scIn
rem endlocal
pause
rem exit /b
; выход:
t1
t2
t3
Press any key to continue . . .
Попробуйте что-то вроде этого:
echo Message1 и echo Message2 и echo Message3