簡體   English   中英

如何通過 API 獲取 Azure DevOps 存儲庫創建日期

[英]How to get Azure DevOps Repository Creation Date via API

您將如何獲取 azure devops git 存儲庫的存儲庫創建日期? 我們有很多從 TFS 移出的存儲庫,但想知道 GIT 存儲庫的添加日期。 這些信息是否可以通過 API 獲得?

我的第一次嘗試是調用 repos api,然后將這些 ID 輸入到 commits api 中。 對於響應中的每個項目,減 1 的計數應該是第一次提交的索引,對嗎? 對於我的一些存儲庫,這似乎是他們提交歷史的一半。 如果我使用零索引,我只會看到最近的提交?

就我個人而言,我沒有廣泛利用審計 API,因此在 Microsoft 為 API 提供過濾器之前,我無法真正談論數據量的挑戰和搜索數據的實用性。

話雖如此,我能夠使用查詢審計日志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

問題似乎在於分支命名和搜索條件被視為通配符。 在 Commits 調用中使用 searchCriteria.itemVersion.version=master 會從包含 master 的任何分支返回提交,這使得在嘗試使用更明顯的索引值時這些提交看起來是亂序的。

對於那些最終只是想在 repo 上獲得第一個提交日期的人來說,這對我有用:

  1. 獲取所有存儲庫 ID 的列表(列表 - 存儲庫有效)。
  2. 對於每個存儲庫 ID,獲取存儲庫中的所有提交。
  3. 獲取最后一次提交的索引(當前存儲庫的提交計數 - 1)。
  4. 第一次提交將是您當前的提交[索引]。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM