2014-01-17 7 views
1

Моя компания использует Visual Studio Team Services (ранее Visual Studio Online, Team Foundation Service). В качестве разработчика я использую git-tf для выполнения моей работы с Git. Чтобы применить непрерывную интеграцию, у меня работает Jenkins, который извлекает код из Team Services с помощью плагина, который использует Team Explorer Everywhere CLC.Как повторно включить фиксацию в TFS?

В последнее время во время фиксации в Team Services, это сообщение пришло вверх:

Готфрид @ Lubuntu-виртуальной машины: ~/git_repo $ ГИТ-тф оформленного ввода

Проверка и $/fireAnalytics: 12%, совершить a0bfea1
git-tf: не удалось отменить изменения в TFS из-за следующих ошибок. Исправьте ошибки и повторите попытку. TF10151: Невозможно заблокировать элемент $/fireAnalytics/packages/fdssuite/src/fdssuite/tests/couch_devices.png для выписки. Предмет $/fireAnalytics/packages/fdssuite/src/fdssuite/tests/couch_devices.png выдан Сашей Готфрид в рабочем пространстве Hudson-hhpberlin fireanalytics-MASTER.

Рабочее пространство упоминалось (рабочего пространства Хадсон-hhpberlin fireanalytics-МАСТЕР) создается сервером Дженкинс CI (с TFS плагин с использованием Tee-CLC). Указанный файл создается во время этапа сборки, который запускает интеграционные тесты и не находится под управлением версиями.

Рабочая область настроена на использование опции плагина TFS «Использовать обновление». Цитата docs

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

Как моя установка CI может повлиять на проверку TFS и как я могу исправить эту ситуацию?

ответ

0

Очевидно, что сервер Jenkins CI запустил новую сборку во время моей транзакции TFS, потому что задание Jenkins было настроено для опроса TFS repo каждую минуту. Я временно отключил Jenkins CI, и транзакция TFS снова была успешной.

2

Двоичные файлы проверяются исключительно TFS, потому что невозможно слить любые изменения, внесенные в файл. Похоже, вы проверили этот файл в рабочей области вашего имени. Вам нужно будет отменить эту проверку (или, по крайней мере, отменить блокировку) в другом рабочем пространстве. Вы можете сделать это из проводника исходного кода или из командной строки.

От стандартной командной строки вы Выдайте

tf undo /workspace:"Hudson-hhpberlin fireanalytics-MASTER";"Sascha Gottfried" "$/fireAnalytics/packages/fdssuite/src/fdssuite/tests/couch_devices.png"

Я подозреваю, что CLC командная строка будет очень похожа (но у меня нет его доступным для проверки на момент).

При использовании учетной записи сборки, вероятно, более безопасно настраивать ее на выполнение исключительных проверок и следить за тем, чтобы при сбое сборки (в случае Gated Checkin) были заблокированы заблокированные файлы. Эти типы ситуаций часто встречаются в Gated Checkins, которые строят последние + shelveset, но по какой-то причине не работают, оставляя файлы на полке.В случае двоичных файлов эти проверки будут эксклюзивными.

Вы также можете настроить TFS, чтобы никогда не проверять только двоичные файлы. В Visual Studio вы найдете эти настройки под Команда>Настройки сервера Team Foundation>Типы файлов управления версиями.

+0

Очевидно, что сборка CI, которая была вызвана во время git-tf commit, несет ответственность за эту ошибку. Это возможно? Я спросил у git-tf @ Codeplex об этом. –

+0

Да, что возможно. – jessehouwing

+0

После подсказки разработчиков git-tf я временно отключил сервер CI во время проверки git-tf. Это сработало. Мне нравится ваш ответ, потому что он раскрывает подробности о доступных для чтения и эксклюзивных проверках и способе контроля этого поведения. Но это не помогло мне решить мой вопрос. Что теперь происходит на SO? –

Смежные вопросы