2015-04-17 2 views
0

У меня есть настройка репозитория git (с использованием gitblit), Jenkins и Team Foundation Server (TFS). Я пытаюсь сделать следующее:Удаление файлов в TFS автоматически (интеграция Git и Jenkins)

1) Попросите инженеров отправить код в репозиторий git.

2) Дженкинс скомпилирует код.

3) Дженкинс добавит изменения кода в TFS.

Довольно простой правый? Ну, я столкнулся с проблемой отражения удаленных файлов в TFS. То, что я работал следующим образом:

1) Дженкинс запускает скрипт, который удаляет все файлы и папки в Дженкинс рабочей

2) Дженкинс затем клоны файлов из мерзавца репозитория в рабочее пространство Дженкинс.

git clone git://devfilesrepo.company.com/DevFiles.git %WORKSPACE% 

3) Дженкинс выполняет командный файл, который имеет следующие команды TFS:

set checkinComment=%1 
tf workfold /collection:http://faketfs:8080/faketfs/DefaultCollection  /workspace:DevFiles /map $/Dev/DevFiles "C:\Jenkins\jobs\DevFiles\workspace" /login:Company\admin,fakePass 
tf checkout "C:\Jenkins\jobs\DevFiles\workspace" /noprompt /recursive /login:Company\admin,fakePass 
tf add "C:\Jenkins\jobs\DevFiles\workspace" /noprompt /recursive /login:Company\admin,fakePass 
tf resolve /auto:KeepYours /noprompt /recursive /login:Company\admin,fakePass 
tf checkin /comment:%checkinComment% /noprompt /recursive /login:Company\admin,fakePass 

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

Чтобы сделать ситуацию еще более сложной. Мне также нужно добавить пару файлов в TFS, которые не должны существовать в репозитории Git.

Есть ли команда TFS, которую я мог бы запустить, которая будет отражать удаленные изменения?

Я думал об удалении папки TFS перед добавлением файлов из Git, но затем я также удалял файлы, которые я добавил в TFS напрямую. Я слышал о Git-TF и Git-TFS, смогут ли эти утилиты выполнять то, что я ищу? Если да, то какие команды я мог запустить, чтобы получить код от Git до TFS?

Благодаря

+0

Я бы предложил создать командный проект в TFS, который использует git для управления исходным кодом и использования этого репозитория git в качестве центрального репо. Есть ли причина, по которой вы не можете/не будете этого делать? Мне действительно не нравится видеть два «источника истины» для кода. Является ли git repo правдой или репо TFVC? –

+0

Да, это потому, что у сторонних разработчиков есть код в Git. Репозиторий TFS находится в интрасети, и мы не хотим, чтобы сторонние разработчики имели доступ к интрасети. – JustAnotherDev

+0

Какая версия TFS вы используете, между прочим? И является ли ваше рабочее пространство DevFiles сервером или локальной рабочей областью? –

ответ

0

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

  • Выполните команду tf checkout, как вы в настоящее время делают
  • Удалить содержимое папки с помощью обычной командной строки подход, за исключением файлов, которые вы хотите сохранить, что не в мерзавца. Сначала необходимо отключить файлы attrib -r, чтобы отключить флаг только для чтения.
  • Скопируйте содержимое git repo в папку
  • Используйте команду TFS Power Tools и, в частности, команду tfpt online. TFS сравнивает рабочую область сервера с содержимым вашей локальной файловой системы и добавит в ожидающие изменения все добавленные, удаляет и изменяет их обнаружение. Конкретная команда, которую вы хотите, это

tfpt online /adds /deletes /diff /noprompt /recursive <folderName>

  • Выполнить команды tf resolve и tf checkin как вы в настоящее время делают.

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

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