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屏幕截图:
没有那部分,我将无法通过本地文件系统来实现我提到的过程,这是我的目标。
现在,您可以手动将标签添加到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版本是:
| 归档时间: |
|
| 查看次数: |
4895 次 |
| 最近记录: |