我正在尝试将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>();
}
}
遗憾的是,有关此文档的文档很少,实际上,我能够找到的唯一一种官方文档是:
我什至在扩展客户端中都找不到该类,我可以找到的唯一类是我在上面使用的GitRepositoryService
,但是该类似乎没有任何文档。
我在网上找到了一些非官方的内容,描述了如何创建TeamProjects,但是在TeamProject内的Repos上却没有任何内容(远程URL,如www.url.com:8080/tfs/TeamProjectCollection/TeamProject/_git/RepoName)。
有人对此有经验吗?
答案 0 :(得分:1)
我认为您不能使用旧的TFS类创建Git存储库,但是可以使用新的TFS .Net libraries(在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;
}