Git частичное / редкое / узкое извлечение и обновление в Azure Devops Hosted Agent - PullRequest
0 голосов
/ 17 января 2019

Мне интересно, возможно ли получить только один файл из GIT-репозитория, чтобы зафиксировать новое изменение в нем. Мы хотим изменить файл в размещенном агенте Azure Devops, однако загрузка всего репо может занять значительно больше времени.

Я читал об этих опциях:

  1. - Фильтр опция [https://askubuntu.com/questions/460885/how-to-clone-git-repository-only-some-directories]
  2. Git sparse checkout (я не уверен, что это доступно только на GitHub) [https://briancoyner.github.io/2013/06/05/git-sparse-checkout.html]
  3. Microsoft GVFS [https://github.com/Microsoft/VFSForGit]

Попытка команды фильтра

git clone --depth 1 --filter = sparse: path = ReadMe.md
предупреждение: фильтрация не распознается сервером, игнорируется

Редкий заказ

git config core.sparsecheckout true
echo File.txt >> .git / info / sparse-checkout мастер происхождения git pull
Однако он все еще извлекал все.

На сервере работает GIT v2.18 .

  • Что-нибудь нужно настроить на сервере, чтобы они работали?
  • Опция --filter доступна только в определенных версиях?
  • Может ли GVFS добиться этого и возможно ли настроить на размещенном агенте?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 21 января 2019
  1. Действительно, метод фильтра не будет работать. Как далее отмечено в вопросе, вы ссылаетесь:

    Начиная с версии v2.19.0 сервер не поддерживается, но его уже можно локально протестировать.

  2. Разреженная проверка будет по-прежнему загружать все файлы, просто не извлечет их на диск.

  3. GVFS требует изменений на сервере и поддерживается только в Azure Repos. Он не является частью акции (вы указываете, что ваш Git-сервер - 2.18.)

Как отметил Шайки Абрамчик, использование REST API может быть вашим лучшим вариантом. Если ваш хостинг-провайдер поддерживает это, вы, вероятно, можете загрузить файл непосредственно у хостинг-провайдера. Многие хостинг-провайдеры позволят вам зафиксировать эти изменения .

0 голосов
/ 17 января 2019

Лучший способ загрузить один файл из Git-репозитория с помощью Azure DevOps Rest API - Items - Get .

GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/items?path={path}&api-version=5.0-preview.1

Если вы добавите параметр download (например: ?path={path}&download=true), файл будет загружен на агент.

Итак, добавьте задачу с помощью простого сценария PowerShell (с Invoke-RestMethod) и получите файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...