svn update: могу ли я повторить результаты? - PullRequest
2 голосов
/ 07 декабря 2009

Я использую svn в сценарии (файл сценария Windows .cmd).

В настоящее время он проверяет все файлы в папке, затем выполняет итерацию этой папки, добавляя все файлы в основной файл как частьпроцесс сборки.Что-то вроде:

svn checkout --username %username% %SVNURL% %workingfolder%
FOR %%i IN (%workingfolder%\*.*) DO TYPE %%i >> %DESTFILE%

Что я хотел бы сделать для сборок после первоначальной сборки, это создать файл «change», в который включены только те файлы, которые были изменены с момента последней сборки.

Я могу использовать команду svn update вместо извлечения, и это дает мне список обновляемых файлов. Справочник по обновлению svn (svnbook.red-bean.com)

Я хотел бы повторить этот список результатов обновления svn, найти эти файлы в рабочей папке и скопироватьих в файл изменений.

Ответы [ 2 ]

0 голосов
/ 07 декабря 2009

Извиняюсь за ответ на мой собственный вопрос, это тоже только частичный ответ, но сейчас я нахожусь там.

Во-первых, проблема с пробелами связана не только с путем к файлу в% SVNExecutable%, но и с пробелами в команде.

Способ решения этой проблемы (работает в Windows XP) - использовать переключатель usebackq и использовать обратные кавычки ` вместо обычных кавычек. Используя это, мне удалось заставить команду svn update работать:

for /f "usebackq tokens=2* delims= " %%x in (`%SVNExecutable%svn up --username %username% %SVNURL% %workfolder%`) do ECHO "%%x"

Это обновило тестовый файл, и из первоначального результата обновления:

U    full\path\to\file\file.sql
Updated to revision 36793.
Summary of conflicts:
Skipped paths: 1

Это дает результат:

"full\path\to\file\file.sql"
"to"
"of"
"paths:"

Последняя оставшаяся часть головоломки, которую я не могу найти, - это findstr с регулярным выражением. Когда я добавлю это обратно и попробую это:

for /f "usebackq tokens=2* delims= " %%x in (`%SVNExecutable%svn up --username %username% %SVNURL% %workfolder% ^| findstr /r /c:"^U"`) do ECHO "%%x"

Я получаю эту ошибку:

The filename, directory name, or volume label syntax is incorrect.

Был в раздумьях, стоит ли начинать этот вопрос как новый вопрос, теперь я пометил этот как ответивший ... в любом случае, вся помощь с благодарностью получена

0 голосов
/ 07 декабря 2009

Вы можете легко найти обновленные файлы:

svn up | findstr /r /c:"^U"

Вы можете перебрать вывод этой команды с помощью команды for:

for /f "tokens=2* delims= " %%x in ('svn up ^| findstr /r /c:"^U"') do copy "%%x" change
...