导出特定日期范围内Azure Repos中特定文件夹中所有文件的git历史记录 [英] Export git history of all files in a specific folder in Azure Repos for a specific date range

查看:83
本文介绍了导出特定日期范围内Azure Repos中特定文件夹中所有文件的git历史记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Salesforce文件夹结构如下,其中包含许多类和元xml:

Salesforce Folder structure as below containing numerous classes and meta xml's:

Project
 --src
   --classes
       -- Class A
       -- Class A-Meta.xml
       -- Class B
       -- Class B-Meta.xml
       -- Class N

问题陈述: 对于每堂课,我需要

Problem statement: For each class, I need

  1. 日期范围内的历史记录
  2. 输出应包含在此日期范围内对此文件进行过提交的文件名,提交ID和作者名.
  3. 以excel/csv/word格式导出此信息

样本输出

 Classname  Author commit
 Class A    Dev1   abcd
 Class A    Dev2   pqrs
 Class A    Dev3   uvwz
 Class B    Dev9   yuot
 Class B    Dev1   qwew

我正在使用VSTS Azure Repos.打开以使用git log或其他快速完成此操作的方式.

I am using VSTS Azure Repos. Open to use git log or any other way of getting this done quickly.

推荐答案

  1. 日期范围内的历史记录

我们可以使用此

We can use this REST API to retrieve git commits for a project in a date range, we can get commit ID, author and committer Info.

示例:

GET https://dev.azure.com/{Org name}/_apis/git/repositories/{repositoryId}/commits?searchCriteria.toDate=6/16/2018 12:00:00 AM&searchCriteria.fromDate=6/14/2018 12:00:00 AM&api-version=5.0

我们可以通过提交ID获取提交文件夹名称

We can get the commit Folder name via commit ID

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

并使用以下API获取详细的提交信息

And get the detail commit info with below API

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

电源外壳示例:

$connectionToken="{pat}"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
$Commits = "https://dev.azure.com/{org name}/_apis/git/repositories/{repo id}/commits?searchCriteria.toDate=9/15/2020 12:00:00 AM&searchCriteria.fromDate=9/1/2020 12:00:00 AM&api-version=5.0" 
$CommitInfo = Invoke-RestMethod -Uri $Commits -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get

ForEach ($ID in $CommitInfo.value.commitId)
{
    Write-Host $ID

    $url = "https://dev.azure.com/{org name}/{project name}/_apis/git/repositories/{repo id}/commits/$($ID)?api-version=6.0-preview.1"
    $base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($connectionToken)"))
    $CommitDetail = Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get
    Write-Host "commit ID is" $CommitDetail.commitId "author is" $CommitDetail.author.name "committer is" $CommitDetail.committer.name

}

结果:

这篇关于导出特定日期范围内Azure Repos中特定文件夹中所有文件的git历史记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆