从Github问题生成更改日志?

时间:2013-02-19 15:05:56

标签: github changelog

有没有办法从Github问题自动生成更改日志?

理想情况下,我希望能够指出一个封闭的里程碑,并生成带有标题的已关闭问题的纯文本列表,或者更好的是带有标记的列表,以获取问题的链接和问题本身的标题。

7 个答案:

答案 0 :(得分:14)

您可以尝试使用Github-Changelog-Generator。 (我是这个项目的作者)

它从标签和合并拉取请求生成更改日志。 该脚本还支持GitHub问题。

此更改日志由此脚本生成。的 CHANGELOG.md

示例:

  

更新日志

     

1.2.5(2015-01-15)

     

Full Changelog

     

已实施增强功能:

     
      
  • 使用里程碑指定修复了哪个版本的错误#22
  •   
     

修正了错误:

     
      
  • 尝试为没有标记#32
  • 的repo生成日志时出错   
     

合并拉取请求:

     
      
  • PrettyPrint课程包括使用小写' pp' #43schwing

  •   
  • 通过命令行选项支持enterprise github #42glenlovett

  •   

答案 1 :(得分:11)

这不适用于Github,但通过Git,您可以通过漂亮的打印运行日志来生成更改日志样式的html页面。

来自https://coderwall.com/p/5cv5lg

git log v2.1.0...v2.1.1 --pretty=format:'<li> <a href="http://github.com/jerel/<project>/commit/%H">view commit &bull;</a> %s</li> ' --reverse | grep "#changelog"

答案 2 :(得分:4)

您可以使用GitHub API获取与给定里程碑相关的问题列表。 例如:

curl https://api.github.com/repos/<user>/<project>/issues\?milestone\=1\&state\=closed

使用用户名和项目替换<user><project>,这将返回一个json列表,列出里程碑的所有已关闭问题,ID为1。例如,您可以使用脚本来提取您感兴趣的信息。这是一个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)

答案 3 :(得分:3)

查看以下工具是否适合github-changes

披露:我是该工具的作者。

答案 4 :(得分:2)

我们创建了一个开源项目,用于从给定日期时间开始,从已关闭的github问题列表中生成更改日志。它可以在这里找到:https://github.com/piwik/github-changelog-generator

答案 5 :(得分:1)

不直接通过GitHub:这将是一种可以放置的钩子,它将基于您的项目可能遵循的命名约定或注释约定。
即使使用问题标题也不总是生成有意义的更改日志的可靠方法,除非您根据需要查看和编辑项目的每个问题标题。

换句话说,它非常依赖于您管理项目的方式,而不是轻易地归结为所有 GitHub回购。 我在一个非常相似的问题“Publish a project release (binary/source packages) on Github?”中说了很多。

答案 6 :(得分:0)

我最近帮助构建了一个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');
  });
});