Ошибка TF: нет изменений для регистрации - PullRequest
5 голосов
/ 28 декабря 2011

У нас есть скрипт NAnt для обновления наших «предварительно собранных» сборок в TFS как одного из наших проектов сборки TeamCity.Сборка запускается другими сборками.Он выполняет проверку TF, перемещает некоторые файлы, затем выполняет проверку TF.

Соответствующая цель (tf разрешает путь TF.exe):

<target name="checkin.assemblies">
  <exec program="${tf}">
    <arg value="checkin" />
    <arg value="${dir.assemblies}" />
    <arg value="/comment:${message}." />
    <arg value="/noprompt" />
    <arg value="/recursive" />
   </exec> 
</target>

Регулярно получаем:

Checking in edit: ...
The following changes were not checked in because the items were not modified.
Undoing edit: ...
There are no remaining changes to check in.
External Program Failed: E:\Microsoft Visual Studio 10.0\Common7\IDE\TF.exe (return code was 1)
Process exited with code 1
BUILD FAILED - 0 non-fatal error(s), 1 warning(s)

Я думаю, что происходит то, что сборка запускается слишком много раз (есть несколько сборок, которые могут ее вызвать).Если файлы, которые мы хотим обновить, не изменились, TFS пропускает регистрацию и «услужливо» возвращает код ошибки.К сожалению, он также возвращает 1 для ошибок «заблокирован для извлечения», которые являются серьезными.

Для справки: Коды выхода из командной строки TF

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

Как мы можем сделать эту работу надежной?

Обновление: В конечном итоге мы пересмотрели конфигурации запуска сборки для TeamCity, чтобы создать «цепочки» сборки, гарантируя, что регистрация запускается только один раз.

1 Ответ

9 голосов
/ 01 января 2012

Существует некоторый документированный параметр командной строки для tf checkin, называемый /force. Он указан в использовании и на MSDN , но нигде не описан.

Устанавливает флаг CheckinParameters.AllowUnchangedContent и позволяет зарегистрировать файл без изменений. Это должно решить вашу проблему.

...