【问题标题】:Azure DevOps REST Api Tags call (Repos > Tags)Azure DevOps REST Api 标签调用(Repos > 标签)
【发布时间】:2020-11-29 17:12:25
【问题描述】:

是否有一个Repos Tags REST Api 调用来从这个页面获取数据? (回购>标签)

如果它还包括CREATEPATCHDELETE,那就太棒了。

它自己使用的标签https://dev.azure.com/{organization}/_git/{repo}/tags?__rt=fps&__ver=2 我认为这是一个不好的迹象。


编辑 1:创建标签

创建Create Tag按钮使用:Annotated Tags

所以在这个 REST Api 调用中缺少的是一个 LIST 来获取元素的 {objectId}


编辑 2:列出和删除标签

列表:要列出所有标签objectId,我发现你可以使用Refs - List

删除:我认为这个调用完全没有记录。但你可以理解,TFS 使用以下有效负载来完成这项工作:

var json = {
    name: `refs/tags/${xName}`,
    newObjectId: '0000000000000000000000000000000000000000',
    oldObjectId: xObjectId
};
var payload = [json];

将此payload 发布到https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?api-version=5.1


编辑 3:git 客户端的行为

我发现在客户端更新git tags 的唯一方法是here

git tag -l | xargs git tag -d
git fetch --tags

【问题讨论】:

    标签: azure-devops azure-devops-rest-api


    【解决方案1】:

    1.创建标签: Create/Get tag apis

    创建标签:

    POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/annotatedtags?api-version=6.0-preview.1
    

    获取标签:

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/annotatedtags/{objectId}?api-version=6.0-preview.1
    

    2.列出标签:我们没有“带注释的标签列表”,但我们有 Refs-tags 做类似的工作。 (来自 Mar Tin 的提示,感谢他!)

    GET https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repositoryId}/refs?filter=tags/&api-version=6.0-preview.1
    

    3.删除标签(F12取回):

    POST https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{RepoName}/refs?api-version=5.1
    

    请求正文(不要忘记[],在 PostMan 中测试时需要):

     [{
        "name": "refs/tags/{TagName}",
        "newObjectId": "0000000000000000000000000000000000000000",
        "oldObjectId": "{OldObjectID}"
     }]
    

    注意:所有关于ObjectID的信息都可以通过tip2中的Refs-tags api获取。

    关于标签是否真的被删除的问题 只移动到一个偷偷摸摸的档案。

    您在尝试通过门户网站中的“删除标签”按钮删除标签时看到这一点:

    而我从 Edge(F12) 获取的相应请求是:

    因此该标签将被永久删除,而不仅仅是移动到偷偷摸摸的存档中。

    【讨论】:

    • 感谢您的回复兰斯。你能告诉我,当标签被ref post newObjectId: '0000000000000000000000000000000000000000' 删除时,TFS 上到底发生了什么?标签是真的被删除了还是只是被移到了一个偷偷摸摸的存档中?
    • @MarTin 真的被删除了,永久删除了!使用ref post newObjectId: '0000000000000000000000000000000000000000 调用Update refs api 具有与删除标签按钮(GUI)相同的功能。正如警告所述,该标签将被真正删除!
    • @MarTin 您可以从上面的 update2 中获得更多详细信息。既然您的问题已经解决,请您添加一个带有详细信息的答案来回答您自己的问题吗?让有类似问题的会员可以从中受益!或者您可以随意编辑我的答案以添加其他详细信息,谢谢~
    猜你喜欢
    • 2021-01-15
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 2021-07-15
    • 2021-02-09
    • 1970-01-01
    • 2020-11-26
    相关资源
    最近更新 更多