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

tse*_*mer 4 git tfs branch tfs-2015 tfs2017

我的公司从TFVC切换到TFS Git。我正在迁移发布自动化工具以支持该开关。

除其他外,该工具为该版本创建一个新分支,以及一个新标签(Git中的“标签”)。对于TFVC,这些操作直接在TFS服务器上执行,并且不需要存储库的本地副本。在Git中仍然可以实现这一点,还是我不得不为这些操作在本地克隆存储库?

到目前为止,我看过的两个库是Microsoft.TeamFoundation.Git.Client,它似乎是TFS Git REST API的官方包装,以及LibGit2Sharp。我不仅限于这些库,因此也欢迎使用另一种选择。

我们还在从TFS 2015升级到TFS 2017的过程中,因此,如果存在仅针对我也想知道的问题之一的答案。

编辑1

明确地说,“直接在远程存储库上”是指没有经过本地存储库。该工具是完全自动化的,如果可能的话,我宁愿不需要文件系统访问。

编辑2

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

在此处输入图片说明

没有那部分,我将无法通过本地文件系统来实现我提到的过程,这是我的目标。

rmc*_*rry 5

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

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

在此处输入图片说明

这也通过REST API公开。在这里查看答案。


更新以响应所涉及的EDIT 2

也可以在API上创建一个分支。该文档将分支称为“参考”:

通过将引用从nil提交(由40 0表示)更新为其他提交来创建引用。

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

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


Content-Type: application/json

[
  {
    "name": {string},
    "oldObjectId": {string},
    "newObjectId": {string}
  }
]
Run Code Online (Sandbox Code Playgroud)

例如:

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

使用此主体,将创建一个名为“ live”的新分支:

[
  {
    "name": "refs/heads/live",
    "oldObjectId": "0000000000000000000000000000000000000000",
    "newObjectId": "4b223e9c93ec3b6aaa6499f06e3ebb7c702e6106"
  },
]
Run Code Online (Sandbox Code Playgroud)

文档在这里


我的TFS版本是:

在此处输入图片说明