Как мне создать Git-репозиторий в TeamProject в Tfs? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь переместить TfsServer со старого сервера на основе TFVC (2013) на более новую версию (2018).Я понял большую часть этого, но мне просто не удается создать много репозиториев программным способом.

Я пытался использовать Microsoft.TeamFoundation.ExtendedClient для создания репозиториев в определенном TeamProject, на основев списке имен.Мне удалось сделать запрос ко всем уже существующим репозиториям:

public void CreateTeamProjectRepositories(IEnumerable<string> input)
{
      using (var newCollection = new TfsTeamProjectCollection(new Uri(_newUrl)))
      {
           var service = newCollection.GetService<GitRepositoryService>();
      }
}

К сожалению, документация по этому вопросу довольно тонкая, фактически единственная официальная документация, которую мне удалось найти, это:

https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2013/dn231953(v%3Dvs.120)

Я даже не могу найти этот класс в расширенном клиенте, единственный класс, который я могу найти, это GitRepositoryService, который я использовал выше, но, похоже, нет никакой документации для этого класса,

В Интернете я нашел некоторые неофициальные материалы, описывающие, как создавать TeamProjects, но ничего о Repos в TeamProject, но не по адресу URL (www.url.com:8080/tfs/TeamProjectCollection/TeamProject/_git/RepoName).

У кого-нибудь есть опыт с этим?

1 Ответ

1 голос
/ 05 мая 2019

Я не думаю, что вы можете создать Git-репозиторий со старыми классами TFS, но вы можете сделать это с новыми TFS .Net библиотеками (доступно в NuGet):

VssConnection connection = new VssConnection(new Uri("http://tfs-server:8080/tfs/{collection}"), new VssCredentials());
GitHttpClient gitClient = connection.GetClient<GitHttpClient>();
GitRepository newRepo = new GitRepository() { Name = "newRepo" };
await gitClient.CreateRepositoryAsync(newRepo, "teamProjectName");

Приведенный выше код работает на TFS 2018, если вы хотите создать репозитории в TFS 2013, я не уверен, что этот код будет работать, поэтому вы можете использовать HttpClient для запуска Rest API и создания репозитория:

var tfsUrl = "http://tfstest01:8080/tfs/{collection}";
var tfsUri = new Uri(tfsInstance + "/{teamProjectGUID}/_apis/git/repositories/?api-version=1.0");
using (HttpClient client = new HttpClient(new HttpClientHandler() { UseDefaultCredentials = true }))
{
     var data = new { name = "newRepo" };
     var json = JsonConvert.SerializeObject(data);
     var content = new StringContent(json, Encoding.UTF8, "application/json");
     HttpResponseMessage response = null;
     response = client.PostAsync(tfsUri, content).Result;
}
...