Top*_*gio 202 git github changelog
我一直在使用Git一段时间了,我最近开始用它来标记我的版本,以便我可以更容易地跟踪更改并能够看到每个客户端正在运行的版本(遗憾的是代码目前要求每个客户都有他们自己的PHP站点副本;我正在改变它,但它很慢).
无论如何,我们开始建立一些动力,我认为能够向人们展示自上次发布以来发生了哪些变化真的很棒.问题是,我没有维护更改日志,因为我不知道如何去做.在这个特定的时间里,我可以浏览日志并手动创建一个,但这会很快累.
我尝试使用谷歌搜索"git changelog"和"git manage changelog",但我没有找到任何真正谈论代码更改工作流程的内容以及与更改日志一致的内容.我们目前正在关注Rein Henrichs的开发工作流程,我很喜欢与之相关的东西.
我缺少一种标准方法,或者这是一个每个人都做自己的事情的领域?
非常感谢您的意见/答案!
小智 169
这是大约3 - 4年前,但为了未来的搜索者,现在可以生成华丽的日志:
git log --oneline --decorate
Run Code Online (Sandbox Code Playgroud)
或者,如果你想让它更漂亮(有终端颜色):
git log --oneline --decorate --color
Run Code Online (Sandbox Code Playgroud)
将输出管道输出到ChangeLog是我目前在所有项目中使用的,它简直太棒了.
Cas*_*bel 58
你可以使用一些git日志来帮助你:
git log --pretty=%s # only print the subject
Run Code Online (Sandbox Code Playgroud)
如果你很好地命名你的分支,以便合并为master显示为"Merged branch feature-foobar"之类的东西,你可以通过仅显示该消息来缩短事物,而不是所有你合并的小提交,它们一起形成特征:
git log --pretty=%s --first-parent # only follow first parent of merges
Run Code Online (Sandbox Code Playgroud)
您可以使用自己的脚本来扩充它,这可以执行诸如去除"合并分支"位,规范化格式等等.当然,您必须自己编写它.
然后,您可以为每个版本为changelog创建一个新部分:
git log [opts] vX.X.X..vX.X.Y | helper-script > changelogs/X.X.Y
Run Code Online (Sandbox Code Playgroud)
并在您的版本发布提交中提交.
如果您的问题是那些提交主题并不像您想要放入更改日志中那样,那么您几乎有两个选择:手动完成所有操作(并尝试更频繁地跟上它而不是玩抓 - 在发布时间),或修复您的提交消息样式.一个选项,如果主题不打算为你做,将在你的提交消息的正文中放置诸如"更改:添加功能foobar"之类的行,以便稍后你可以做一些类似于git log --pretty=%B | grep ^change:
只抓取那些超级 - 重要的消息位.
我不完全确定git可以真正帮助你创建更改日志.也许我误解了"管理"的意思?
vaa*_*aab 53
免责声明:我是gitchangelog的作者,我将在下面发言.
TL; DR:你可能想检查gitchangelog自己的更改日志或生成前一个的ascii输出.
如果你想从你的git历史中生成一个更改日志,你可能需要考虑:
Optionaly你可能想要一些分类(新的东西,变化,错误修正)......
考虑到这一切,我创建并使用gitchangelog.它旨在利用git commit消息约定来实现所有以前的目标.
必须具有提交消息约定才能创建一个不错的更改日志(使用或不使用gitchangelog
).
提交消息约定
以下是有关在添加提交消息时考虑可能有用的建议.
您可能希望将提交大致分成大部分:
此外,您可能想要标记一些提交:
尝试通过尽可能多地定位用户(功能)来编写提交消息.
例
这是标准,git log --oneline
以显示如何存储这些信息::
* 5a39f73 fix: encoding issues with non-ascii chars.
* a60d77a new: pkg: added ``.travis.yml`` for automated tests.
* 57129ba new: much greater performance on big repository by issuing only one shell command for all the commits. (fixes #7)
* 6b4b267 chg: dev: refactored out the formatting characters from GIT.
* 197b069 new: dev: reverse ``natural`` order to get reverse chronological order by default. !refactor
* 6b891bc new: add utf-8 encoding declaration !minor
Run Code Online (Sandbox Code Playgroud)
所以如果你注意到,我选择的格式是:
{new|chg|fix}: [{dev|pkg}:] COMMIT_MESSAGE [!{minor|refactor} ... ]
Run Code Online (Sandbox Code Playgroud)
要查看实际的输出结果,您可以查看gitchangelog的PyPI页面的结尾
要查看我的提交消息约定的完整文档,您可以看到参考文件gitchangelog.rc.reference
如何从中生成精美的更改日志
然后,制作完整的更改日志非常容易.您可以快速制作自己的脚本,或者使用gitchangelog
.
gitchangelog
将生成一个完整的更改日志(带有分段支持New
,Fix
...),并且可以合理地配置为您自己的提交约定.它支持任何类型的输出感谢到通过模板化Mustache
,Mako templating
以及写有原蟒蛇默认的传统引擎; 所有当前的3个引擎都有如何使用它们的示例,并且可以输出更改日志,如gitchangelog的PyPI页面上显示的那样.
我相信你也知道还有很多其他git log
的changelog
工具.
Har*_*eta 26
更多的是CHANGELOG.告诉我你是否喜欢它.
git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B
Run Code Online (Sandbox Code Playgroud)
小智 23
该gitlog-to-changelog
脚本可以生成GNU风格ChangeLog
.
如图所示gitlog-to-changelog --help
,您可以ChangeLog
使用以下选项选择用于生成文件的提交--since
:
gitlog-to-changelog --since=2008-01-01 > ChangeLog
Run Code Online (Sandbox Code Playgroud)
或者之后传递其他参数--
,这些参数将传递给git-log
(由内部调用gitlog-to-changelog
):
gitlog-to-changelog -- -n 5 foo > last-5-commits-to-branch-foo
Run Code Online (Sandbox Code Playgroud)
例如,我在Makefile.am
我的一个项目的顶层使用以下规则:
.PHONY: update-ChangeLog
update-ChangeLog:
if test -d $(srcdir)/.git; then \
$(srcdir)/build-aux/gitlog-to-changelog \
--format='%s%n%n%b%n' --no-cluster \
--strip-tab --strip-cherry-pick \
-- $$(cat $(srcdir)/.last-cl-gen).. \
>ChangeLog.tmp \
&& git rev-list -n 1 HEAD >.last-cl-gen.tmp \
&& (echo; cat $(srcdir)/ChangeLog) >>ChangeLog.tmp \
&& mv -f ChangeLog.tmp $(srcdir)/ChangeLog \
&& mv -f .last-cl-gen.tmp $(srcdir)/.last-cl-gen \
&& rm -f ChangeLog.tmp; \
fi
EXTRA_DIST += .last-cl-gen
Run Code Online (Sandbox Code Playgroud)
此规则在发布时用于ChangeLog
使用最新的尚未记录的提交消息进行更新.该文件.last-cl-gen
包含记录在其中的最新提交的SHA1标识符,ChangeLog
并存储在Git存储库中. ChangeLog
也会记录在存储库中,以便可以在不更改提交消息的情况下对其进行编辑(例如,更正拼写错误).
bit*_*voc 20
由于为每个版本创建标记是最佳做法,因此您可能希望对每个版本的更改日志进行分区.在这种情况下,此命令可以帮助您:
git log YOUR_LAST_VERSION_TAG..HEAD --no-merges --format=%B
Run Code Online (Sandbox Code Playgroud)
sky*_*der 14
对于GitHub项目,它可能很有用:github-changelog-generator
它从标签已关闭的问题和合并的拉取请求生成更改日志.
此CHANGELOG.md由此脚本生成.
例:
更新日志
1.2.5(2015-01-15)
实施增强功能:
- 使用里程碑来指定修复了哪个版本的错误#22
修正了错误:
- 尝试为没有标签#32的 repo生成日志时出错
合并拉取请求:
通过命令行选项支持enterprise github #42(glenlovett)
Tom*_*rre 10
我也为此建了一个图书馆.它完全可以使用Mustache模板进行配置.这样可以:
我还做了:
关于Github的更多细节:https://github.com/tomasbjerre/git-changelog-lib
归档时间: |
|
查看次数: |
97527 次 |
最近记录: |