使用 csv 文件中的所有信息生成在两个标签之间合并的所有合并请求的列表

Posted

技术标签:

【中文标题】使用 csv 文件中的所有信息生成在两个标签之间合并的所有合并请求的列表【英文标题】:Generate list of all Merge Requests merged between two tags with all informations in csv file 【发布时间】:2021-01-27 19:16:49 【问题描述】:

我正在尝试创建一个 csv 文件,其中包含有关在两个标签之间合并的合并请求的所有信息。我正在尝试为每个合并请求获取此类信息:

UID; ID; TITLE OF MR; REPOSITORIES; STATUS; MILESTONE; ASSIGNED; CREATION-DATE; MERGED-DATE; LABEL; URL.

现在我有一个命令可以让所有合并请求在两个标签之间合并一些信息并将其放入 csv 文件中:

git log --merges --first-parent master --pretty=format:"%aD;%an;%H;%s;%b" TagA..TagB --shortstat >> MRList.csv

如何获取其他信息?我在 git log api 中看到我的命令中只有选项,但我找不到其他选项。

感谢您的帮助!

【问题讨论】:

【参考方案1】:

我编写了一个小的 Python 脚本来执行此操作。用法:

git log --pretty="format:%H" <start>..<end> | python collect.py

脚本:

#!/usr/bin/env python

import sys
import requests

endpoint = 'https://gitlab.com'
project_id = '4242'

mrs = set()
for line in sys.stdin:
    hash = line.rstrip('\n')
    r = requests.get(endpoint + '/api/v4/projects/' + project_id + '/repository/commits/' + hash + '/merge_requests')
    for mr in r.json():
        if mr['id'] in mrs:
            continue
        mrs.add(mr['id'])

        print('!  ()'.format(mr['iid'], mr['title'], mr['web_url']))

【讨论】:

【参考方案2】:

目前,这还没有在两个标签之间,但你有,GitLab 13.6(2020 年 11 月):

将合并请求导出为 CSV

许多组织都需要记录更改(合并请求)和围绕这些事务的数据,例如谁创作了 MR,谁批准了它,以及何时将该更改合并到生产中。虽然不是一个详尽的列表,但它强调了可追溯性的反复出现的主题以及从 GitLab 导出这些数据以满足审计或其他监管要求的需求。

以前,您需要使用 GitLab 的 merge requests API 使用自定义工具编译此数据。现在,您可以单击一个按钮并接收包含您需要的必要监管链信息的 CSV 文件。

请参阅 Documentation 和 Issue。

【讨论】:

感谢您的回答,但我们有很多组件,我无法为每个版本一一进行。这就是为什么我试图自动化这个动作。你知道我该怎么做吗? 您需要使用合并请求 API

以上是关于使用 csv 文件中的所有信息生成在两个标签之间合并的所有合并请求的列表的主要内容,如果未能解决你的问题,请参考以下文章

java编程将若干个excel文件合并成一个csv文件,文件变大的很多,怎么解决

如何根据标签的属性名称选择两个标签之间的 xml 文件中的所有节点?

用C语言怎么把文件中的两行合并成一行

vb.net 怎么生成csv文件与怎么读取csv文件

怎么用命令行把多个csv文件合并成一个xls或者xlsx文件

读取csv字典变成str了怎么办