TFS Git - 直接在远程存储库上创建分支和标签

TFS Git - creating branch and tag directly on remote repository

我的公司从 TFVC 切换到 TFS Git。我正在迁移一个发布自动化工具来支持这个转换。

除其他外,该工具还为发布创建了一个新分支,以及一个新标签("tag" in Git)。对于 TFVC,这些操作直接在 TFS 服务器上执行,不需要存储库的本地副本。这是否仍然可以在 Git 中实现,或者我是否会被迫在本地克隆存储库以进行这些操作?

到目前为止我看过的两个库是 Microsoft.TeamFoundation.Git.Client,它似乎是 TFS Git REST API 的官方包装器,以及 LibGit2Sharp .我不限于那些图书馆,所以也欢迎其他选择。

我们也正在从 TFS 2015 升级到 TFS 2017,所以如果有仅针对其中一个的答案,我也想知道。

编辑 1

明确地说,"directly on remote repository" 我的意思是 不通过本地。该工具是完全自动化的,如果可能的话,我宁愿不需要文件系统访问权限。

编辑 2

与@rmcsharry 一样,现在可以直接在远程服务器上创建标签。这是一个很好的改进,但当然主要目标是首先直接在远程创建一个 分支 ,这在网络 UI 中绝对是可能的,只是还没有(还? ) 通过 API。这是网络 UI 屏幕截图:

如果没有那部分,我无法在不通过本地文件系统的情况下自动化我提到的过程,这是我的目标。

目前只能在VS2015中创建Git个标签(本地),无法推送到远程服务器。您必须使用 git 命令行:git push --tags 推送标签。

但是支持推送Git标签到远程的功能已经在计划中:

https://visualstudio.uservoice.com/forums/121579-visual-studio-ide/suggestions/10189500-support-the-ability-to-push-git-tags-to-remote

您现在可以手动将标签添加到 TFS 中的提交(直接在服务器上),这可能会有所帮助。

您必须先 select 提交,然后单击最右侧的 ... 按钮,这会打开一个下拉菜单,其中一个选项是创建标签:

这也通过 REST api 公开。查看答案.


更新以回应有问题的编辑 2

也可以在 API 上创建一个分支。文档将分支称为 'ref':

Creating a ref is achieved by updating the ref from the nil commit (represented by 40 0s) to a different commit.

结构是这样的(注意{project}是可选的):

POST https://{instance}/DefaultCollection
/{project}/_apis/git/repositories
/{repository}/refs?api-version={version}


Content-Type: application/json

[
  {
    "name": {string},
    "oldObjectId": {string},
    "newObjectId": {string}
  }
]

例如:

POST https://fabrikam-fiber-inc.visualstudio.com/DefaultCollection
/_apis/git/repositories/278d5cd2-584d-4b63-824a-2ba458937249
/refs?api-version=1.0

有了这个主体,将创建一个名为 'live':

的新分支
[
  {
    "name": "refs/heads/live",
    "oldObjectId": "0000000000000000000000000000000000000000",
    "newObjectId": "4b223e9c93ec3b6aaa6499f06e3ebb7c702e6106"
  },
]

文档 here.


我的 TFS 版本是: