如何在 Tfs 的团队项目中创建 Git 存储库?
How do I create a Git Repository within a TeamProject in Tfs?
我正在尝试将 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>();
}
}
可悲的是,文档在这方面相当薄弱,事实上我能找到的唯一一种官方文档是这样的:
我什至在扩展客户端中找不到 class,我唯一能找到的 class 是我在上面使用的 GitRepositoryService
,但似乎没有任何文档为此 class。
我在网上找到了一些描述如何创建 TeamProject 的非官方资料,但在 TeamProject 中的 Repos 上没有任何内容(远程 url 如 www.url.com:8080/tfs/TeamProjectCollection/TeamProject/_git/RepoName)。
有人对此有经验吗?
我认为您不能使用旧的 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
执行其余 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;
}
我正在尝试将 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>();
}
}
可悲的是,文档在这方面相当薄弱,事实上我能找到的唯一一种官方文档是这样的:
我什至在扩展客户端中找不到 class,我唯一能找到的 class 是我在上面使用的 GitRepositoryService
,但似乎没有任何文档为此 class。
我在网上找到了一些描述如何创建 TeamProject 的非官方资料,但在 TeamProject 中的 Repos 上没有任何内容(远程 url 如 www.url.com:8080/tfs/TeamProjectCollection/TeamProject/_git/RepoName)。
有人对此有经验吗?
我认为您不能使用旧的 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
执行其余 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;
}