gitchangelog通过git log生成变更日志。
项目描述
使用您的提交日志来制作美观且可配置的变更日志文件。
功能
完全由配置文件驱动,可以根据您的变更日志策略进行定制。(例如,请参阅参考配置文件)
根据正则表达式匹配过滤提交/标签
动态重构提交摘要或提交正文
将提交消息分类到部分(例如:新功能、修复、变更...)
支持任何输出格式,因为使用了模板,您甚至可以选择您自己的首选模板引擎(mako、mustache、完整的Python...)。
支持您的合并或变基工作流程和复杂的git历史记录
支持全量或增量变更日志生成以满足您的需求。
支持通过尾部键值(如果您使用它们)轻松访问
支持一个提交的多作者通过Co-Authored-By 尾部键值
支持标准Python安装或无依赖的单个可执行文件。(最后这个特性在Windows上使用时还不是完全无痛苦的)
要求
gitchangelog 与Linux/BSD/MacOSX和Windows上的Python 2和Python 3兼容。
如果您遇到不兼容性问题,请提交问题。
安装
完整包
Gitchangelog发布在PyPI上,因此
pip安装gitchangelog
.. 是在任何平台上安装完整包的方法。
如果您是从源代码安装,请注意Windows上开发工具尚未完全可用。
完整包提供了gitchangelog.py可执行文件,前提是
存在一个提供所有值系统级默认设置的参考配置文件。
一些示例模板,包括mustache和mako模板引擎的语言。非常适合启动您的变体。
从源代码安装
如果您更喜欢从源代码仓库工作,它支持在您的系统上安装它的常见约定
python setup.py install
请注意,对于Linux/BSD,源代码根目录中有一个指向可执行文件的链接。这可以是一个方便的方式来处理源代码版本。
单个可执行文件安装
gitchangelog.py文件是一个完整的可执行文件,可以在不使用任何其他文件的情况下使用。这在Linux/BSD系统上使用起来更自然。例如,您可以输入
curl -sSL https://raw.githubusercontent.com/vaab/gitchangelog/master/src/gitchangelog/gitchangelog.py > /usr/local/bin/gitchangelog && chmod +x /usr/local/bin/gitchangelog
这将安装gitchangelog以便所有用户都可以访问,并使用运行会话的默认Python解释器。
请注意:如果您选择以独立模式安装,则必须确保至少在您的配置文件中设置所有必要的配置键。作为一个良好的起点,您可能需要将参考配置文件作为您的基础配置文件复制。
这是因为gitchangelog无法再访问参考配置文件以获取默认值。
示例
默认输出是ReSTuctured text,因此在ASCII中应该可读。
以下是一个使用gitchangelog更改日志的示例。
当前的git log输出,以便您可以了解日志历史
* 59f902a Valentin Lab new: dev: sections in changelog are now in the order given in ``gitchangelog.rc`` in the ``section_regexps`` option. (0.1.2) * c6f72cc Valentin Lab chg: dev: commented code to toggle doctest mode. * a9c38f3 Valentin Lab fix: dev: doctests were failing on this. * 59524e6 Valentin Lab new: usr: added ``body_split_regexp`` option to attempts to format correctly body of commit. * 5883f07 Valentin Lab new: usr: use a list of tuple instead of a dict for ``section_regexps`` to be able to manage order between section on find match. * 7c1d480 Valentin Lab new: dev: new ``unreleased_version_label`` option in ``gitchangelog.rc`` to change label of not yet released code. * cf29c9c Valentin Lab fix: dev: bad sorting of tags (alphanumerical). Changed to commit date sort. * 61d8f80 Valentin Lab fix: dev: support of empty commit message. * eeca31b Valentin Lab new: dev: use ``gitchangelog`` section in ``git config`` world appropriately. * 6142b71 Valentin Lab chg: dev: cosmetic removal of trailing whitespaces * 3c3edd5 Valentin Lab fix: usr: ``git`` in later versions seems to fail on ``git config <key>`` with errlvl 255, that was not supported. * 3f9617d Valentin Lab fix: usr: removed Traceback when there were no tags at all in the current git repository. * e0db9ae Valentin Lab new: usr: added section classifiers (ie: New, Change, Bugs) and updated the sample rc file. (0.1.1) * 0c66d59 Valentin Lab fix: dev: Fixed case where exception was thrown if two tags are on the same commit. * d2fae0d Valentin Lab new: usr: added a succint ``--help`` support.
以下是gitchangelog输出
0.1.2 (2011-05-17) ------------------ New ~~~ - Sections in changelog are now in the order given in ``git- changelog.rc`` in the ``section_regexps`` option. [Valentin Lab] - Added ``body_split_regexp`` option to attempts to format correctly body of commit. [Valentin Lab] - Use a list of tuple instead of a dict for ``section_regexps`` to be able to manage order between section on find match. [Valentin Lab] - New ``unreleased_version_label`` option in ``gitchangelog.rc`` to change label of not yet released code. [Valentin Lab] - Use ``gitchangelog`` section in ``git config`` world appropriately. [Valentin Lab] Changes ~~~~~~~ - Commented code to toggle doctest mode. [Valentin Lab] - Cosmetic removal of trailing whitespaces. [Valentin Lab] Fix ~~~ - Doctests were failing on this. [Valentin Lab] - Bad sorting of tags (alphanumerical). Changed to commit date sort. [Valentin Lab] - Support of empty commit message. [Valentin Lab] - ``git`` in later versions seems to fail on ``git config <key>`` with errlvl 255, that was not supported. [Valentin Lab] - Removed Traceback when there were no tags at all in the current git repository. [Valentin Lab] 0.1.1 (2011-04-07) ------------------ New ~~~ - Added section classifiers (ie: New, Change, Bugs) and updated the sample rc file. [Valentin Lab] - Added a succint ``--help`` support. [Valentin Lab] Fix ~~~ - Fixed case where exception was thrown if two tags are on the same commit. [Valentin Lab]
并且渲染的全结果直接用于生成PyPI页面的更改日志的HTML网页。
用法
参考配置文件包含在gitchangelog包中,并用于提供设置的默认值。如果您没有安装包并使用独立文件,那么gitchangelog可能无法访问这些默认值。只要您在配置文件中提供了所有必需的值,这不是问题。
gitchangelog配置文件的建议位置是当前git仓库的根目录,文件名为.gitchangelog.rc。然而,您也可以将其放在其他位置,以下是检查的位置(首先匹配的位置将生效)
在环境变量GITCHANGELOG_CONFIG_FILENAME提供的路径中
在git配置条目gitchangelog.rc-path中存储的路径(这可能存储在系统位置或每个仓库中)
(推荐)在当前git仓库的根目录中,文件名为.gitchangelog.rc
然后,您可以在GIT仓库中调用gitchangelog,它将在标准输出上打印更改日志。
配置文件格式
参考配置文件注释很多,相当简单。您应该能够按需使用它。
gitchangelog的更改日志是由它自己和参考配置文件生成的。您可以在PyPI页面的更改日志中看到输出。
输出引擎
在配置文件末尾,您会注意到一个名为 output_engine 的变量。默认情况下,它设置为 rest_py,这是一个旧版的 Python 引擎,用于生成上述示例中显示的 ReSTuctured Text 输出格式。如果这个引擎满足您的需求,您就不需要调整此选项。
为了渲染模板,gitchangelog 将生成一个数据结构,然后通过输出引擎进行渲染。这应该能帮助您获得所需的精确输出。
由于人们可能有不同的需求和知识,因此提供了一个使用 mustache 的模板系统。提供了 mustache 模板来渲染 ReSTuctured Text 或 markdown 格式。如果您了解 mustache 模板,那么您可以轻松地添加或修改这些现有模板。
还提供了一个 mako 模板引擎。您会发现一个 mako 模板可以生成与旧版相同的 ReSTuctured Text 输出。它提供供参考和/或进一步调整,如果您更愿意使用 mako 模板。
Mustache
mustache 输出引擎使用 mustache 模板。
mustache 模板是通过 pystache 实现的,它是 mustache 规范的 Python 实现。因此,如果您的 Python 环境中有 pystache 模块,则 mustache 输出引擎才可用。
gitchangelog 的默认安装包含 mustache 模板。这些可以通过向 mustache(..) 输出引擎提供一个简单的标签来调用,例如(在您的 .gitchangelog.rc 文件中)
output_engine = mustache("markdown")
或者,您可以通过指定模板文件的绝对路径(或相对路径,默认情况下从项目的 git 顶级目录开始,或者如果设置了,则从 git config gitchangelog.template-path 位置开始)来提供您自己的 mustache 模板,例如
output_engine = mustache(".gitchangelog.tpl")
您可以随意复制捆绑的模板,以便将它们用作您自己变体的基础。在源代码中,这些位于 src/gitchangelog/templates/mustache 目录中,一旦安装,它们位于从您的 gitchangelog.py 安装位置开始的 templates/mustache 目录中。
Mako
makotemplate 输出引擎模板由 mako Python 模板系统提供支持。因此,如果您的 Python 环境中有 mako 模块,则 mako 输出引擎才可用。
gitchangelog 的默认安装包含 mako 模板。您可以通过向 makotemplate(..) 输出引擎提供一个简单的标签来调用它们,例如(在您的 .gitchangelog.rc 文件中)
output_engine = makotemplate("markdown")
或者,您可以通过指定模板文件的绝对路径(或相对路径,默认情况下从项目的 git 顶级目录开始,或者如果设置了,则从 git config gitchangelog.template-path 位置开始)来提供您自己的 mustache 模板,例如
output_engine = makotemplate(".gitchangelog.tpl")
您可以随意复制捆绑的模板,以便将它们用作您自己变体的基础。在源代码中,这些位于 src/gitchangelog/templates/mako 目录中,一旦安装,它们位于从您的 gitchangelog.py 安装位置开始的 templates/mako 目录中。
Changelog 数据树
这是发送到输出引擎的当前数据结构的一个示例
{'title': 'Changelog', 'versions': [{'label': '%%version%% (unreleased)', 'date': None, 'tag': None 'sections': [{'label': 'Changes', 'commits': [{'author': 'John doe', 'body': '', 'subject': 'Adding some extra values.'}, {'author': 'John Doe', 'body': '', 'subject': 'Some more changes'}]}, {'label': 'Other', 'commits': [{'author': 'Jim Foo', 'body': '', 'subject': 'classic modification'}, {'author': 'Jane Done', 'body': '', 'subject': 'Adding some stuff to do.'}]}]}, {'label': 'v0.2.5 (2013-08-06)', 'date': '2013-08-06', 'tag': 'v0.2.5' 'sections': [{'commits': [{'author': 'John Doe', 'body': '', 'subject': 'Updating Changelog installation.'}], 'label': 'Changes'}]}]}
合并分支历史支持
将提交归属到特定版本可能很棘手。假设你有这个典型的合并树(找到标签!)
* new: something (HEAD, tag: 0.2, develop) * Merge tag '0.1.1' into develop |\ | * fix: out-of-band hotfix (tag: 0.1.1) * | chg: continued development |/ * fix: something (tag: 0.1) * first commit (tag: 0.0.1, master)
下面是一个gitchangelog的最小草案,展示如何将提交归属到版本
0.2 * new: something. * Merge tag '0.1.1' into develop. * chg: continued development. 0.1.1 * fix: out-of-band hotfix. 0.1 * fix: something.
用例
无分节
如果您想删除分节但仍保留其他内容,您可能需要使用
section_regexps = [ ('', None) ] subject_process = (strip | ucfirst | final_dot)
这将禁用分节,但不会从提交摘要中删除用于分节的词缀。
增量变更日志
这也称为部分变更日志生成,该功能允许仅生成变更日志的子部分,并结合可配置的发布操作,您可以将结果插入到现有变更日志中。通常这很有意义
当想要切换到gitchangelog或更改您的约定时
您的历史记录的一部分不遵循约定。
您想要合并之前的CHANGELOG。
您宁愿为每个发布提交更改到变更日志文件。
出于性能考虑,您然后可以只为新的提交生成变更日志并保存结果。
因为您希望能够编辑它以进行一些必要的微小编辑。
生成部分变更日志就像gitchangelog REVLIST一样简单。以下是一些示例
## will output only tags between 0.0.2 (excluded) and 0.0.3 (included) gitchangelog 0.0.2..0.0.3 ## will output only tags since 0.0.3 (excluded) gitchangelog ^0.0.3 HEAD ## will output all tags up to 0.0.3 (included) gitchangelog 0.0.3
此外,gitchangelog可以自动确定哪个修订是你最后的(一些小帮助)。这是通过指定revs配置选项来完成的。此配置文件选项将像在命令行中指定一样使用。
以下是一个符合当前变更日志格式的示例
revs = [ Caret( FileFirstRegexMatch( "CHANGELOG.rst", r"(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+))\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n")), ]
这将查找文件CHANGELOG.rst中给定正则表达式的第一个匹配项,并将该rev正则表达式子模式作为字符串返回。Caret函数将简单地给给定的字符串添加一个^前缀。因此,此代码将防止重新创建任何以前生成的变更日志部分(更多关于REVLIST语法的信息,来自git rev-list参数。)
请注意,如果通过命令行或配置文件未提供REVLIST(或revlist等效设置为["HEAD", ]),则提供给模板的数据结构将title设置为None。这是一种让模板检测它处于“增量模式”的好方法。
默认情况下,这将仅输出到标准输出您的变更日志的新部分,您可能希望直接将其插入到现有的变更日志中。这是publish参数可以帮助您的地方。默认情况下,它设置为stdout,您可能希望将其设置为
publish = FileInsertIntoFirstRegexMatch( "CHANGELOG.rst", r'/(?P<rev>[0-9]+\.[0-9]+(\.[0-9]+)?)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n/', idx=lambda m: m.start(1) )
完整的配方可能是
OUTPUT_FILE = "CHANGELOG.rst" INSERT_POINT = r"\b(?P<rev>[0-9]+\.[0-9]+)\s+\([0-9]+-[0-9]{2}-[0-9]{2}\)\n--+\n" revs = [ Caret(FileFirstRegexMatch(OUTPUT_FILE, INSERT_POINT)), "HEAD" ] action = FileInsertAtFirstRegexMatch( OUTPUT_FILE, INSERT_POINT, idx=lambda m: m.start(1) )
或者,您可以使用这个其他配方,使用FileRegexSubst,它具有更新未发布部分的优势,如果您已经生成了它并且需要刷新,因为您添加了新的提交或修正了一些提交
OUTPUT_FILE = "CHANGELOG.rst" INSERT_POINT_REGEX = r'''(?isxu) ^ ( \s*Changelog\s*(\n|\r\n|\r) ## ``Changelog`` line ==+\s*(\n|\r\n|\r){2} ## ``=========`` rest underline ) ( ## Match all between changelog and release rev ( (?! (?<=(\n|\r)) ## look back for newline %(rev)s ## revision \s+ \([0-9]+-[0-9]{2}-[0-9]{2}\)(\n|\r\n|\r) ## date --+(\n|\r\n|\r) ## ``---`` underline ) . )* ) (?P<rev>%(rev)s) ''' % {'rev': r"[0-9]+\.[0-9]+(\.[0-9]+)?"} revs = [ Caret(FileFirstRegexMatch(OUTPUT_FILE, INSERT_POINT_REGEX)), "HEAD" ] publish = FileRegexSubst(OUTPUT_FILE, INSERT_POINT_REGEX, r"\1\o\g<rev>")
作为第二个示例,以下是与mustache markdown格式相同的相同配方
OUTPUT_FILE = "CHANGELOG.rst" INSERT_POINT_REGEX = r'''(?isxu) ^ ( \s*\#\s+Changelog\s*(\n|\r\n|\r) ## ``Changelog`` line ) ( ## Match all between changelog and release rev ( (?! (?<=(\n|\r)) ## look back for newline \#\#\s+%(rev)s ## revision \s+ \([0-9]+-[0-9]{2}-[0-9]{2}\)(\n|\r\n|\r) ## date ) . )* ) (?P<tail>\#\#\s+(?P<rev>%(rev)s)) ''' % {'rev': r"[0-9]+\.[0-9]+(\.[0-9]+)?"} revs = [ Caret(FileFirstRegexMatch(OUTPUT_FILE, INSERT_POINT_REGEX)), "HEAD" ] publish = FileRegexSubst(OUTPUT_FILE, INSERT_POINT_REGEX, r"\1\o\n\g<tail>")
贡献
欢迎任何建议或问题。非常欢迎推送请求,请查阅指南。
推送请求指南
您可以发送任何代码。我将检查它并自己将其集成到代码库中,同时保留您作为提交者。这个过程可能需要一些时间,如果您遵循以下指南,则将花费更少的时间
使用PEP8或pylint检查您的代码。尽量保持80列宽。
按最小关注点分离您的提交
每个功能/错误修复提交应包含代码、测试和文档。
每个提交都应通过测试(以便于快速定位问题)。
之前的带有排版或代码美观性更改的次要提交非常欢迎。这些更改应在提交摘要中标记为 !minor。
提交信息应遵循 gitchangelog 规则(检查 git log 以获取示例)。
如果提交修复了问题或完成了功能的实现,请在摘要中提及。
如果您对这里没有回答的指南有疑问,请检查当前的 git log,您可能会找到之前的提交,这可以显示如何处理您的问题。否则,只需发送您的 PR 并提出问题。我保证不会咬人。
许可证
版权所有 (c) 2012-2018 Valentin Lab。
在 BSD 许可证 下授权。
变更日志
3.0.4 (2018-03-17)
修复
根据 python 3.7 的要求符合 PEP479(修复 #101)[Valentin Lab]
3.0.3 (2017-04-23)
修复
API cli 中的关于隐式 HEAD 的更改未在修订列表指定中记录。 (修复 #81) [Valentin Lab]
在 2.5.1 中,gitchangelog show ^3.0.0 命令会隐式地在 revlist 指定中添加 HEAD,实际上等同于 0.0.3..HEAD。
这种行为在 3.0.0+ 中被移除,以遵循 git rev-list REVLIST 语法。因此,gitchangelog ^3.0.0 不会选择任何修订版本,因此会报错关于没有匹配 revlist 的提交。
3.0.2 (2017-04-21)
修复
[mustache/markdown] 模板现在与增量变更日志生成模式兼容。(修复 #80)[Valentin Lab]
3.0.1 (2017-03-17)
修复
支持空消息的提交。(修复 #76)[Valentin Lab]
3.0.0 (2017-03-17)
新功能
现在可以在 git config 中指定模板路径。(修复 #73)[Valentin Lab]
添加 FileRegexSubst 以允许可更新的增量食谱。[Valentin Lab]
通过添加的函数和食谱作为示例,您可以将当前未发布的变更日志更新到传统的增量行为。如果您处理相当复杂的正则表达式,FileRegexSubst 可能比 FileInsertAtFirstRegexMatch 更强大。
可配置的 publish 操作,以允许更多自动化的变更日志场景(修复 #39)[Valentin Lab]
特别是,使用增量变更日志生成的项目现在可以通过使用 publish 操作来完全自动化该过程,该操作将新部分插入到现有的变更日志文件中。
unreleased_version_label 现在可以即时计算。[Valentin Lab]
这可以使您更精确地重命名关于尚未标记的提交的第一部分。例如,通过使用提交哈希或任何 git 属性。
添加了完整的 Windows 支持。[Valentin Lab]
不再需要参考配置文件。(修复 #54)[Valentin Lab]
新 revs 配置文件选项,允许动态设置目标 rev-list。(修复 #61)[Valentin Lab]
使用此选项,增量变更日志变得更加简洁。在先前的行为中,您在调用 gitchangelog 之前必须知道最后一个版本。现在,仅调用 gitchangelog 就可以通过这个新的配置选项生成确切的最后一个缺失部分。
模板现在支持直接指向文件(修复 #46,修复 #63)。[Héctor Pablos, Valentin Lab]
请注意,相对路径将从 git 的顶级目录中进行搜索。
提供辅助函数以集成 Co-Authored-By 尾随值。(修复 #69)[Valentin Lab]
您现在可以在模板中使用 commit["authors"] 来获取一个提交的所有作者列表。请参见 restructuredtext.tpl mako 模板的使用示例。Mustache 模板也通过 commit["author_names_joined"] 获取他们自己的作者合并列表。
向模板提供完整的提交 API 访问权限(修复了 #18)[Valentin Lab]
支持拖车键值支持。[Valentin Lab]
Windows 兼容性。[Jean-Baptiste Lab, Laurent LAPORTE, Michele, Valentin Lab]
变更
当标签被注释时,使用标签者日期而不是提交日期。(修复了 #60)[Valentin Lab]
移除了 show 位置参数的需求。[Valentin Lab]
废弃了过时的 gitchangelog init 命令。[Valentin Lab]
修复
优雅地支持 gitchangelog 的 stdout 上的关闭或关闭管道。[Valentin Lab]
例如,当使用 Python 时,Python 会输出一些愤怒的评论。
gitchangelog | head
现在它更加优雅,并且会在不抱怨的情况下让进程尽早完成。
Revlist 在 Windows 上无法按预期工作。[Valentin Lab]
Windows 不像 Linux 那样支持命令行中的单引号。幸运的是,没有对单引号的要求,因此它们已经被删除,以确保更好的 Windows 兼容性。
使用 revlists 可能会显示不需要的提交或没有提交。[Valentin Lab]
当指定与标签匹配的标签过滤器正则表达式不匹配的提交的修订版本时,会发生这种情况。
在 Windows 上创建部分更改日志的修订列表指定功能不起作用。[Valentin Lab]
编码问题阻止在特定 Windows 版本上输出日志。[Valentin Lab]
修复了读取不同默认区域设置的 UTF-8 git 日志时的编码问题。[Valentin Lab]
由于默认代码页不是 utf-8,Windows 平台更有可能遇到此错误。它通过在读取 git 日志时使用显式编码来修复。现在可以在 gitchangelog 的配置文件中按仓库设置此编码的默认值。尽管如此,此选项应仅在病理配置中设置,因为默认行为是在设置时使用 git config i18n.logOutputEncoding,如果没有设置,则使用 utf-8,这是 git 的默认日志编码。
2.5.1 (2015-11-11)
修复
使用参考配置作为默认值。[Tuukka Mustonen]
当在非 git 目录中调用时,错误消息在 Python 3 中未正确显示。[Valentin Lab]
--debug 参数在 Python 2.7 中会导致命令行参数解析错误。(修复了 #66)[Valentin Lab]
2.5.0 (2016-10-16)
新功能
默认隐藏意外的堆栈跟踪,并允许在需要时显示它们。[Valentin Lab]
当前默认 ReST 格式中的新行修复(修复了 #62)[Stavros Korokithakis]
这些已经被修改
列表元素之间没有新行,除非有一些要显示的正文消息,然后只使用正文开头的一行新行来处理正文中的可能列表。
部分标题之前有一行新行。
版本标题之前有两行新行。
修复
在某些奇怪的情况下,在 stderr 上输出警告(修复了 #52)[Valentin Lab]
如果在存储库中没有找到标签,或者没有标签与过滤器正则表达式匹配,或者如果所有提交都被忽略……这会导致来自 gitchangelog 的令人烦恼但合法的输出。因此,为了帮助诊断正在发生的情况,当遇到边缘情况时,将打印额外的警告。
[mustache/restructuredtext] 避免变量内容的 HTML-转义(修复了 #64)[Mark Milstein]
2.4.0 (2015-11-10)
新功能
添加可选的位置参数 REVLIST 以允许增量变更日志输出(修复 #26)[Valentin Lab]
请参阅使用案例文档以获取更多信息。
2.3.0 (2015-09-25)
修复
一个隐藏的臭虫,可能会导致 python3 出错(修复 #27)[Valentin Lab]
实际上,这个臭虫是通过 python3 随机哈希揭示的(感谢 @rschoon 提供的提示),并且可以在 python2.7 的 -R 模式下重现。
实际上,如果给 git show 命令一个标签引用,其行为会有所不同,并在使用格式字符串之前打印一些随机意外的信息。这会在格式字符串的第一个字段之前添加很多混乱。
实际上,这个字段依赖于字典的内部顺序,而这个顺序并不重要,因此这部分没有做任何处理。
在 python2.7 中,不知何故,它总是保持相同的顺序,这揭示出来没有影响(可能是一个当前变更日志中很少使用的字段)。
Python3 或 Python2.7 -R 会打乱这个顺序,并在将前缀附加到实际上非常重要的字段(例如,将时间戳转换为整数)时触发错误。
2.2.1 (2015-06-09)
修复
修复:文档中 ìnclude_merge 选项在样本配置文件中输入错误(由 @tuukkamustonen 报告,已修复 #29)。[Valentin Lab]
更新文档以反映目前没有对 Windows 的支持。(修复 #28)[Valentin Lab]
实际上,Windows 会在 subprocess 调用时失败。(参见 #28)
从变更日志输出中移除提交的元信息页脚。(修复 #25)[Valentin Lab]
一些各种工具(例如 Gerrit)可能会在您提交消息正文的页脚中留下一些元信息,而您不希望在您的变更日志中重复这些信息。因此,移除了页脚中的所有值(这关系到 Change-Id、Acked-by、CC、Signed-off-by、Bug 等等,以及任何其他值)。
2.2.0 (2015-01-27)
新功能
提供对旧配置文件格式的支持。[Valentin Lab]
添加了 ‘octobercms-plugin’ mako 模板。(修复 #16)[Valentin Lab]
添加了 body_process 和 subject_process 选项。(修复 #22)[Valentin Lab]
这些选项取代了 replace_regexps 和 body_split_regexp,因为它们提供了在将主题或正文文本包含到变更日志之前对文本转换的完全控制。
添加了 include_merge 选项以过滤合并提交。[Casey Duquette]
变更
生成更线性的提交历史(修复 #14)[Casey Duquette]
而不是按日期顺序检索 git log,检索作为标签之间的差异的 log 以生成对发布之间变更的更准确视图。
例如,想象这个 git 图
* 6c0fd62 (HEAD, tag: sprint-6, origin/smoke, smoke, develop) * 5292a28 Merge back to develop |\ | * 6612fce (tag: sprint-5.1, origin/master, origin/HEAD, master) super important hotfix * | 7d6286f more development work * | 8c1e3d6 continued development work * | fa3d4bd development work |/ * ec1a19c (tag: sprint-5)
之前,提交 fa3d4bd、8c1e3d6、7d6286f 在 develop 分支上发生,在导致打标签 sprint-5.1 的 hotfix 之前,因为提交的顺序,这些提交被捕获在发布 sprint-5.1 的变更日志中。但是很明显,这些提交直到 sprint-6 才被包含在发布中。新的变更日志计算方法将捕获这一点并正确反映,将那些变更分配给 sprint-6。
修复
省略了最后一个提交(修复 #23)。[Valentin Lab]
当模板不存在时,出现虚假的消息。[Valentin Lab]
重构了通用代码并修正了错误的消息。
在解析 git log 时,移除了假设的内存耗尽。[Valentin Lab]
将标准输出按git log产生的块进行解析。
2.1.2 (2014-04-25)
修复
当配置路径存在但不是文件时,报错退出。(修复了#11)[Casey Duquette]
例如,配置文件可能是一个目录。
2.1.1 (2014-04-15)
修复
删除了文件名与标签名称匹配时抛出的异常。(修复了#9)[Valentin Lab]
2.1.0 (2014-03-25)
新功能
Python3 兼容性。[Valentin Lab]
通过只执行一个shell命令来获取所有提交,在大仓库中提高了性能。(修复了#7)[Valentin Lab]
添加 init 参数,在当前git仓库中创建一个完整的 .gitchangelog.rc 文件。[Valentin Lab]
删除可选的第一个参数,该参数可以指定要考虑的目标git仓库。[Valentin Lab]
这是为了消除重复操作的方式。"gitchangelog" 应在git仓库内部运行。
任何使用 gitchangelog MYREPO 的用法都可以写成 (cd MYREPO; gitchangelog)。
默认使用标准格式化配置。[Valentin Lab]
如果不提供任何配置文件,将使用默认的 standard 格式化方式。另外,您在配置文件中定义的任何选项都将添加到默认配置值之上。这可以减小配置文件的大小,甚至可以按照标准消除配置文件的需求。
因此,您可以通过仅提供部分配置文件来调整标准以满足您的需求。请参阅测试示例。
删除用户或系统范围的配置文件查找。[Valentin Lab]
这符合这样的思考:您为仓库构建一个变更日志,并且生成变更日志的规则应该绝对是明确的,因此它属于仓库本身。[Valentin Lab]
这不是理由,但删除用户和系统范围的配置文件也极大地简化了测试性。[Valentin Lab]
修复
非ASCII字符的编码问题。[Valentin Lab]
为了Windows兼容性和更好的性能,避免使用管道,并通过避免展开完整日志来获取最后一个提交。[Valentin Lab]
更好地支持git配置文件格式的异质特性。(修复了#4)[Valentin Lab]
git配置文件格式允许模糊的键
- [a “b.c”]
d = foo
- [a.b “c”]
e = foo
- [a.b.c]
f = foo
都是有效的。因此,代码被简化,可以直接使用 git config。这种简化还将处理部分可以赋予值的情况。
- [a “b”]
c = foo
- [a]
b = foo
通过避免解析整个文件内容,并依赖于 git config 实现来确保与该文件格式的解析兼容,而不重新实现该文件格式的解析。
如果gitchangelog无法解析您的git配置,它不应该失败。[Michael Hahn]
2.0.0 (2013-08-20)
新功能
添加了一个带有标准ReSTuctured文本格式的 mako 输出引擎。[Valentin Lab]
添加了一些有关查找 gitchangelog.rc 配置文件路径方案的信息。[Valentin Lab]
添加了模板系统以及带有 mustache 模板支持的restructured text和markdown输出格式的示例。[David Loureiro]
变更
从默认的样本变更日志输出中删除了 pkg 和 dev 提交。[Valentin Lab]
修复
一些错误消息没有写入stderr。[Valentin Lab]
1.1.0 (2012-05-03)
新功能
添加了一种新的配置文件查找方案,该方案添加了一个新的可能默认位置 .gitchangelog.rc 在git仓库的根目录。[Valentin Lab]
添加了一个新部分,以直接查看 gitchangelog 输出。改写了某些句子,并做了其他一些小的添加。[Valentin Lab]
变更
删除了旧的 gitchangelog.rc.sample 以支持新的已记录版本。[Valentin Lab]
修复
样本文件与文档不一致,现在接受“测试”和“文档”受众。[瓦伦丁实验室]
1.0.2 (2012-05-02)
新功能
添加了一个高度文档化的新样本文件。[瓦伦丁实验室]
修复
ignore_regexps无效,只会匹配行首。[瓦伦丁实验室]
显示作者日期而不是提交日期。[瓦伦丁实验室]
0.1.2 (2011-06-29)
新功能
添加了body_split_regexp选项,以正确格式化提交正文。[瓦伦丁实验室]
使用元组列表而不是字典来管理section_regexps之间的顺序,以便在找到匹配项时管理段落。[瓦伦丁实验室]
修复
在较新版本的git中,似乎在git config <key>时失败,错误级别为255,不支持该操作。[瓦伦丁实验室]
在当前git仓库完全没有标签时删除了Traceback。[瓦伦丁实验室]
0.1.1 (2011-06-29)
新功能
添加了部分分类器(例如:新功能、更改、错误)并更新了示例rc文件。[瓦伦丁实验室]
添加了简洁的--help支持。[瓦伦丁实验室]
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
gitchangelog-3.0.4.tar.gz的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3d8d6a730450fbd5b0a9bc58d0dd3e269c967d7eb4fece0c5cff4372a3f77421 |
|
MD5 | ca9970682315034697f42b25b9a82f08 |
|
BLAKE2b-256 | 12e39b5c8f1c80a675da2bba0a131427273f255d6e8fa767553f30f2bdf1d557 |
gitchangelog-3.0.4-py2.py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 45f8b8e64cece0d9bb03a35ecd8ee62c1c7157f8dac0ef3cb68381bfcc1bde29 |
|
MD5 | 6712388ba0239926ce812118ab4b272f |
|
BLAKE2b-256 | 9df9554f9d1e2031a330148299b81ed7d6d5f1ef8969154384ca4ae8dd403b7a |