【问题标题】:Changelog generation from Github issues?从 Github 问题生成变更日志?
【发布时间】:2013-02-04 07:44:05
【问题描述】:

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

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

【问题讨论】:

标签: github changelog


【解决方案1】:

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

换句话说,它非常依赖于您管理项目的方式,并且不容易推广到所有 GitHub 存储库。
我在一个非常相似的问题“Publish a project release (binary/source packages) on Github?”中说了这么多。

【讨论】:

    【解决方案2】:

    这不是专门针对 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"
    

    【讨论】:

    • 有趣的选择,比我的回答更实用。 +1
    • @james-mcmahon 这不是一个很好的解决方案,尤其是对于 GitHub,它有自己的问题跟踪器,可以让您生成更好的变更日志。根据这篇文章,将提交提交到更改日志是一个糟糕的例子:keepachangelog.com 所以,请查看下面我的答案,这完全解决了你问它的主题。
    【解决方案3】:

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

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

    &lt;user&gt;&lt;project&gt; 替换为用户名和项目,这将返回一个包含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)
    

    【讨论】:

    • 有趣的方法,比我的回答更详细。 +1
    【解决方案4】:

    看看下面的工具能不能帮到你github-changes

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

    【讨论】:

    • 终于!非常感谢@idefine,这正是我一直想要的——通过解析适当格式的版本历史记录生成的发行说明。是否有匹配的 Git-pre-commit 脚本来确保格式得到支持?它很容易创建,但我喜欢重复使用轮子:)。
    • 另外,我想知道“问题”是否也拉出“拉取请求”,这在 Github 中看起来也像门票。
    • @AnneTheAgile 是的,它会拉出拉取请求。我还没有制作 pre-commit-script,但是你可以看到我在这里使用的 release.sh:github.com/lalitkapoor/github-changes/blob/master/release.sh
    【解决方案5】:

    我最近为此帮助构建了一个 jQuery 插件,它使用 GitHub 问题将应用更新直接传达给用户。 repo 可以在这里找到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');
      });
    });
    

    【讨论】:

      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

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

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

        这个变更日志是由这个脚本生成的。 CHANGELOG.md

        例子:

        更新日志

        1.2.5 (2015-01-15)

        Full Changelog

        实施的增强功能:

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

        修复的错误:

        • 尝试为不带标签的仓库生成日志时出错#32

        合并的拉取请求:

        【讨论】:

          【解决方案8】:

          除了第三方解决方案(或像 generate-changelog 这样的 GitHub Action)之外,您可能很快会在 2021 年第三季度拥有一个 native feature from GitHub

          软件生命周期中最重要的部分之一是发布您的代码供他人使用。

          GitHub Releases 通过提供引人入胜的自动发行说明,让这一切变得更加容易。
          创建 Release 时,您可以单击按钮自动生成 Release Notes。
          如果您想要更自定义的内容,您可以使用 REST API 来获取生成的发布说明并将它们集成到您现有的发布流程中。

          我们还希望确保这些发行说明在维护者共享它们时看起来令人惊叹,并使它们更容易被发现。我们对版本进行了全面重新设计,以使项目公告看起来令人惊叹。

          我们在 Feed 中显示这些版本以增加发现。

          我们还在改进发布版本的开放图数据,以便它们在 GitHub 平台上共享时看起来同样出色。

          预期结果

          我们的首要目标是让维护人员轻松创建出色的发行说明,以便更多人发现维护人员所做的出色工作。

          许多项目将能够从详细的发行说明中获益。

          对于那些在发行说明中投入更多时间来编写社论内容的维护人员来说,预期的结果是我们可以腾出他们目前花费在维护自定义基础架构和编译变更日志上的时间,这样他们就可以专注于为客户提供最重要的内容, 高质量的编辑内容。

          我们的另一个目标是确保发行说明看起来很棒,并且是维护者和开发人员乐于阅读和分享的内容。

          它将如何运作?

          • 新版本 UI 将能够通过功能预览启用
          • 发布创建 UI 中的一个新按钮将能够被按下以从任何标签生成发布说明
          • 生成的注释将能够通过.github/release.yml 进行配置
          • 新的 REST API 将允许客户在自己方便的时候生成注释,以进一步自动化和自定义 GitHub 操作体验。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2020-01-05
            • 2016-08-01
            • 2022-11-01
            • 2012-03-28
            • 1970-01-01
            • 2020-12-17
            • 1970-01-01
            • 2020-02-16
            相关资源
            最近更新 更多