我正在创建一个适用于我们特定用例的变更日志生成器。
如果我理解了git
工作原理,那么当我git log <tag>
或git log <tag1>..<tag2> (or use ...)
返回的集合固有地分别属于那个或那些标签时。好的,假设我是对的,那没问题。不过,问题有几个。
如果我使用git log <tag>
,git
它不会只返回该标签的一组提交。如果该标签是该标签模式的第一个标签,它将返回该标签的提交,或者从请求的标签到第一个匹配模式的标签的所有标签的所有提交。如果我可以将每个提交归因于哪个标签,那就没问题了,但我似乎不能。git
在我看来,这似乎是最大的大杂烩。似乎没有明确的方法将提交与特定标签关联起来,除非我没有以正确的方式执行此操作。
我尝试使用多种方法将 libgit2 的实现包含在我编写的代码和其他人编写的应用程序中。我得出的结论是,最好只依赖系统git
命令,但在我看来,它仍然有问题:
git log --merges --decorate=full --pretty=format:%H [some tag or tag range]
每个哈希我执行以下操作:
git show $hash -s --decorate
我还使用模板来捕获默认输出中未显示的内容refs from %D
- 有时 refs 为空,这没有意义,因为我正在从标签范围中提取提交哈希!这种行为根本没有意义!
似乎我应该能够将来自 a 的每个提交git log <tag>
与其组成标签关联起来。如何确保我的日志输出始终显示提交所属的标签?