有没有一种方式可以从Github问题自动生成变更日志?
理想情况下,我希望能够指向一个已关闭的里程碑,并生成一个包含它们标题的已关闭问题的纯文本列表或者更好的是一个链接到这些问题和问题的标题的标记列表。
已实现的增强功能:
已解决的缺陷:
已合并的拉取请求:
通过命令行选项支持企业级 GitHub #42 (glenlovett)
git log v2.1.0...v2.1.1 --pretty=format:'<li> <a href="http://github.com/jerel/<project>/commit/%H">view commit •</a> %s</li> ' --reverse | grep "#changelog"
curl https://api.github.com/repos/<user>/<project>/issues\?milestone\=1\&state\=closed
将<user>
和<project>
替换为用户名和项目名称,这将返回一个具有id为1
的里程碑的所有已关闭问题的json列表。然后,您可以使用脚本提取您感兴趣的信息。以下是一个打印问题列表作为重构文本的Python示例:
import json
with open("issues.json") as of:
data = json.load(of)
for issue in data:
t = issue['title']
n = issue['number']
url = issue['html_url']
print "* %s [`Issue %s <%s>`_]" % (t, n, url)
换句话说,这非常依赖于您如何管理项目,并且不容易推广到所有 GitHub 存储库。
我在一个非常相似的问题 "Publish a project release (binary/source packages) on Github?" 中也这样说过。
除了使用第三方解决方案(或者像generate-changelog
这样的 GitHub Action),您很快可能在 2021 年第三季度从 GitHub 获得一个原生功能:
最近我参与了一个 jQuery 插件的开发,它使用 GitHub 问题跟用户直接沟通应用程序更新。该仓库可以在这里找到 https://github.com/uberVU/github-changelog
使用方法非常简单:
$(function() {
var $demoChangelog = $('.demo-changelog');
//call the plugin on a dom none
$demoChangelog.changelog({
//give it a repo to monitor
githubRepo: 'uberVU/github-changelog-playground',
});
//manually check for new closed issues
$('.demo-button').on('click', function(e) {
e.stopPropagation();
$demoChangelog.changelog('checkForUpdates');
});
});