Извлечение нескольких источников репозитория TFS git с помощью подмодулей git

#git #tfs #azure-devops

#git #tfs #azure-devops

Вопрос:

Я столкнулся с проблемой при попытке получить доступ к различным источникам git в сборке TFS.

У меня есть 2 репозитория Test1 и Test2 — https://tfs.org.com:8080/tfs/collection/project/_git/Test1 (amp; Тест2). В Test2 я добавил sample.txt amp; .файл gitmodules.

В файле .GitModules есть cmd — git submodule add https://tfs.org.com:8080/tfs/collection/project/_git/Test1 (поскольку я тоже хочу проверить содержимое Test1 при запуске репозитория Test2)

Теперь в Build def (который создает Test2) я проверил опцию (Проверка подмодулей) — и запустил сборку. Но я не вижу, чтобы содержимое Test1 проверялось на сервере сборки. Как я могу этого добиться?

Примечание: я пробовал использовать другой вариант, который я нашел в Интернете, но безуспешно.

 [submodule "Test1"]
    path = Test1
    url = https://tfs.org.com:8080/tfs/collection/project/_git/Test1
  

(Приведенный выше — это POC, который я тестирую, чтобы заставить его работать в нашей реальной среде, т.Е. Azure DevOps — доступ к TFS с помощью подключения к другой службе git для сборки и выпуска)

Вот журнал сборки для источников Get:

 2020-10-04T15:16:20.1648800Z Entering TfsGitSourceProvider.PrepareRepositoryAsync
 
2020-10-04T15:16:20.1648800Z localPath=E:Temp1s
 
2020-10-04T15:16:20.1648800Z clean=True
 
2020-10-04T15:16:20.1648800Z sourceBranch=refs/heads/master
 
2020-10-04T15:16:20.1648800Z sourceVersion=1cca491d4af9def54e8e9d11b3c6ffbb226ace21
 
2020-10-04T15:16:20.1648800Z Syncing repository: Test2 (Git)
 
2020-10-04T15:16:20.1648800Z repository url=https://tfs.org.com:8080/tfs/collection/project/_git/Test2
 
2020-10-04T15:16:20.1648800Z checkoutSubmodules=True
 
2020-10-04T15:16:20.2586300Z Running 'git clean -fdx' on E:Temp1s.
 
2020-10-04T15:16:20.5555003Z Running 'git reset --hard HEAD' on E:Temp1s.
 
2020-10-04T15:16:20.6648794Z HEAD is now at 043b897 Updated .gitmodules
 
2020-10-04T15:16:20.6805036Z Starting fetch...
 
2020-10-04T15:16:20.9930080Z Checking out 1cca491d4af9def54e8e9d11b3c6ffbb226ace21 to E:Temp1s with submodules
 
2020-10-04T15:16:21.0398784Z Checked out branch refs/heads/master for repository Test2 at commit 1cca491d4af9def54e8e9d11b3c6ffbb226ace21
 
2020-10-04T15:16:21.0398784Z commit=1cca491d4af9def54e8e9d11b3c6ffbb226ace21
 
2020-10-04T15:16:21.0398784Z Leaving TfsGitSourceProvider.PrepareRepositoryAsync
  

Комментарии:

1. У вас должно быть несколько журналов процесса проверки Git в вашей сборке. Можете ли вы добавить их к своему вопросу?

2. @SorenBjornstad добавил журналы сборки

3. @user2153844 Я протестировал его на своей стороне, но он хорошо сформулирован. Похоже, ваши шаги верны. Можете ли вы следовать моим инструкциям и повторить попытку?

4. @user2153844 Не получаю вашего ответа в течение нескольких дней, не могли бы вы поделиться своей последней информацией об этой проблеме? Не стесняйтесь, дайте мне знать, если вы все еще заблокированы, я сделаю все возможное, чтобы помочь 🙂

Ответ №1:

Вы должны выбрать опцию для загрузки подмодулей.

Опция проверки подмодулей

В YAML необходимо добавить явный checkout шаг

 steps:
- checkout: self
  submodules: true
  

Комментарии:

1. Спасибо @giulio. Но пока я использую классическую сборку TFS. Мы не реализуем в YAML.

2. На верхнем скриншоте этого ответа показано, как использовать его в Classic.

Ответ №2:

Я выполнил следующие действия, и все сработало, как ожидалось:

  1. Создайте два репозитория и инициализируйте.
  2. Используйте команду «добавить подмодуль git». введите описание изображения здесь
  3. Теперь у меня есть файл .gitmodules и файл test1 в моем репозитории test2 введите описание изображения здесь
  4. Создайте конвейер и выберите опцию «Проверка подмодулей». введите описание изображения здесь
  5. Я вижу следующие журналы после запуска конвейеров. введите описание изображения здесь