Использование команд git на этапе сборки TeamCity

Один из моих проектов сборки TeamCity v7.0 основан на использовании разницы между текущей ветвью развития и главной ветвью, чтобы определить, что нужно запускать. Я написал небольшой script, который использует что-то вроде:

git diff origin/master..origin/QA --name-only --diff-filter=AM | DoSomethingWithThoseFiles

К сожалению, журнал сборки указывает, что git diff не работает. Когда я перехожу в каталог buildAgent/work для этого проекта, я вижу, что нет папки .git, поэтому он не может выполнить требуемые операции git.

Я поместил teamcity.git.use.local.mirrors=true в файл buildAgent.properties, как указано в TW-15873, но это никоим образом не помогает.

Есть ли что-нибудь, что я могу сделать, чтобы получить список файлов, которые были изменены между двумя ветвями в script для моего шага сборки?

Ответ 1

Попробуйте изменить режим проверки VCS на "Всегда проверить файлы на агенте", как описано здесь. Это должно предоставить сборку script доступ к папке .git.

Ответ 2

@Mike Два ответа верны, нужно настроить корень VCS для автоматического использования режима проверки на Agent -not- на сервере. В документах TC не упоминается, что эта требуемая настройка по умолчанию скрыта как "расширенная". Итак, вот картина того, что искать.

Advanced Settings

FYI, моя конкретная ошибка шага решения VS2013 была из MSBuild, как показано ниже. Я использую последний TeamCity Enterprise 9.0 EAP (сборка 31963). [PreBuildEvent] Exec [14:21:55][Exec] git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\MYPROJECT\bin\Debug\version.txt" [14:21:55][Exec] fatal: Not a git repository (or any of the parent directories): .git [14:21:55][Exec] C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1131, 5): error MSB3073: The command "git rev-parse --short=9 HEAD > "C:\TeamCity\buildAgent\work\e5e910561e800525\Higgens\bin\Debug\version.txt"" exited with code 128. [14:21:55]

//редактировать; Я не знал, как добавить это в комментарий.