Заметки консультанта

Шамрай Александр Владимирович

Azure DevOps Rest Api. 23. Создание, удаление и восстановление репозиториев GIT

Posted by Shamrai Alexander на 26 августа, 2019

Для взаимодействия с объектами версионного контроля GIT используется клиент GitHttpClient. В рамках данной статьи мы рассмотрим методы:

  • Создание репозитория.
  • Просмотр свойств репозитория
  • Удаление и восстановление репозитория.

Создание репозитория

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

newRepo = new GitRepository();
newRepo.Name = GitNewRepoName;

newRepo = GitClient.CreateRepositoryAsync(newRepo, TeamProjectName).Result;

Также можно создать ответвленный репозиторий через тот же метод. Для этого необходимо свойства родительского репозитория определить через объект GitRepositoryCreateOptions, который мы будем использовать вместо GitRepository. В этом объекте необходимо указать идентификатор родительского репозитория и ссылку на родительский проект. Далее необходимо вызвать метод CreateRepositoryAsync с дополнительным параметром – ссылку на ветвь для ответвления. Пример использования:

GitRepositoryCreateOptions newGitRepository = new GitRepositoryCreateOptions();
newGitRepository.Name = GitNewRepoName;

GitRepository parent = GitClient.GetRepositoryAsync(TeamProjectName, ParentRepo).Result;

newGitRepository.ParentRepository = new GitRepositoryRef();

newGitRepository.ParentRepository.Id = parent.Id;

newGitRepository.ParentRepository.ProjectReference = parent.ProjectReference;

newRepo = GitClient.CreateRepositoryAsync(newGitRepository, TeamProjectName, «refs/heads/master»).Result;

Просмотр свойств репозитория

Получить репозитории можно несколькими методами:

  1. Методом GetRepositoriesAsync, который возвращает список объектов GitRepository. При этом достаточно передать только имя командного проекта в качестве параметра.
  2. Методом GetRepositoryAsync, который возвращает объект GitRepository необходимого репозитория. Здесь можно передать два параметра: имя командного проекта и имя репозитория.

Пример получения репозитория:

GitRepository GitRepo = GitClient.GetRepositoryAsync(TeamProjectName, RepoName).Result; gitThread.Status = Status;
Console.WriteLine(«—————————————————————«);

Console.WriteLine(» GIT REPO: « + GitRepo.Name);

Console.WriteLine(«—————————————————————«);

Console.WriteLine(«Remote url : « + GitRepo.RemoteUrl);

Console.WriteLine(«Size : « + GitRepo.Size);

Объект GitRepository содержит следующие полезные свойства:

  • Id – идентификатор репозитория
  • Name – имя репозитория
  • RemoteUrl – ссылка на репозиторий
  • Size – размер репозитория
  • И другие.

Удаление и восстановление репозитория

Удаление репозитория выполняется с помощью метода DeleteRepositoryAsync, который принимает один параметр: идентификатор репозитория.

Пример удаление репозитория:

GitRepository gitRepo = GitClient.GetRepositoryAsync(TeamProjectName, RepoName).Result;
GitClient.DeleteRepositoryAsync(gitRepo.Id).Wait();

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

  1. Получить содержимое корзины командного проекта через функцию GetRecycleBinRepositoriesAsync.
  2. Восстановить репозиторий через функцию RestoreRepositoryFromRecycleBinAsync, которая принимает следующие параметры: объект GitRecycleBinRepositoryDetails с единственным свойством Deleted, имя командного проекта, идентификатор репозитория.

Пример восстановления репозитория

List<GitDeletedRepository> repos = GitClient.GetRecycleBinRepositoriesAsync(TeamProjectName).Result;
if (repos.Count == 0) return;

var repotorestore = repos.FirstOrDefault(x => x.Name == GitRepoName);

if (repotorestore != null)

{

GitClient.RestoreRepositoryFromRecycleBinAsync(new GitRecycleBinRepositoryDetails { Deleted = false }, TeamProjectName, repotorestore.Id).Wait();

Console.WriteLine(«Restored repo: « + GitRepoName);

}

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

Пример очистки корзины проекта:

List<GitDeletedRepository> repos = GitClient.GetRecycleBinRepositoriesAsync(TeamProjectName).Result;
foreach (var repo in repos)

GitClient.DeleteRepositoryFromRecycleBinAsync(TeamProjectName, repo.Id).Wait();

Пример тестового приложения можно посмотреть здесь:

https://github.com/ashamrai/TFRestApi/tree/master/23.TFRestApiAppManageGitRepo

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google photo

Для комментария используется ваша учётная запись Google. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s

 
%d такие блоггеры, как: