如何通过 API 获取 Azure DevOps 存储库创建日期

问题描述 投票:0回答:3

如何获取 azure devops git 存储库的存储库创建日期? 我们有大量从 TFS 移出的存储库,但想知道添加 GIT 存储库的日期。 这些信息可以通过 API 获得吗?

我的第一次尝试是调用 repos api,然后将这些 ID 输入到 commits api 中。对于响应中的每个项目,计数减 1 应该是第一次提交的索引,对吧? 对于我的一些存储库,这似乎是其提交历史的一半。如果我使用索引为零,我只会看到最近的提交?

git azure-devops
3个回答
2
投票

就我个人而言,我没有广泛利用审计 API,因此在 Microsoft 为 API 提供过滤器之前,我无法真正谈论数据量的挑战以及搜索数据的实用性。

话虽这么说,我可以利用 Query Audit Log API 获取信息。有一些假设,您的 Azure DevOps 版本在创建存储库时记录了当时的审核条目。 一些审核日志是最近才进行的。

PowerShell 中的示例:

$AzureDevOpsAuthenicationHeader = @{Authorization = 'Basic ' + [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($AzureDevOpsPAT)")) }

$uri = "https://auditservice.dev.azure.com/{organization}/_apis/audit/auditlog?api-version=6.0-preview.1"

Invoke-RestMethod -Method Get -Uri $uri -Headers $AzureDevOpsAuthenicationHeader | 
    Select-Object -ExpandProperty decoratedAuditLogEntries | 
    Where-Object { $_.actionId -eq 'Git.RepositoryCreated' } |
    Select-Object actionId, details, timestamp

提供:

actionId              details                                           timestamp                   
--------              -------                                           ---------                   
Git.RepositoryCreated Created Git repository "Temp" in project Basic    2020-09-11T23:19:19.4007876Z
Git.RepositoryCreated Created Git repository "Testing" in project Basic 2020-09-09T21:10:56.1738383Z
Git.RepositoryCreated Created Git repository "CMMI" in project CMMI     2020-08-24T14:33:43.6040892Z
Git.RepositoryCreated Created Git repository "Basic" in project Basic   2020-08-24T14:33:05.3245162Z

0
投票

问题似乎在于分支命名和搜索条件被视为通配符。在 Commits 调用中使用 searchCriteria.itemVersion.version=master 会从包含 master 的任何分支返回提交,这使得在尝试使用更明显的索引值时这些提交看起来是无序的。

对于那些最终来到这里只是想在存储库上获得第一个提交日期的人,这对我有用:

  1. 获取所有存储库 ID 的列表(列表 - 存储库有效)。
  2. 对于每个存储库 ID,获取存储库中的所有提交。
  3. 获取最后一次提交的索引(当前存储库的提交计数 - 1)。
  4. 第一个提交将是您当前的提交[索引]。

0
投票

您可以使用此 API 获取前 50,000 个提交,其中
组织:组织名称

project:可以使用

获取项目名称
p_url = f"https://dev.azure.com/{organization}/_apis/projects?api-version=7.1-preview.4"

repository_id:可以使用

获取存储库ID
r_url = f"https://dev.azure.com/{organization}/{project}/_apis/git/repositories?api-version=6.1-preview.1"

使用

获取提交数据
url=f"https://dev.azure.com/{organization}/{project}/_apis/git/repositories/{repository_id}/commitsbatch?$top={50000}&api-version=7.1"

向 URL 发出 POST 请求并获取响应

response = requests.post(url, headers=headers)
    if response.status_code == 200:
        data = response.json()
        if "value" in data and data["value"]:
            # Extract the date of the first commit
            return data["value"][-1]["committer"]["date"] 
        else:
            return "No Commits"
    else:
        print(f"Failed to fetch commit date: {response.status_code} - {response.text}")
        return None
© www.soinside.com 2019 - 2024. All rights reserved.