git:在发布/标记中获取*新*贡献者(作者)列表
我正在为发布准备changelog,并做一些统计 很容易列出以前版本的贡献者:git:在发布/标记中获取*新*贡献者(作者)列表,git,git-log,Git,Git Log,我正在为发布准备changelog,并做一些统计 很容易列出以前版本的贡献者: git shortlog -s -e -n TAG.. 评审员: git log TAG.. | grep -Ei '(reviewed|acked)-by:' |sed 's/.*by: //' | sort | uniq -c | sort -n -r 提交人: git shortlog -s -e -n -c TAG.. 但是如何列出TAG之后的新贡献者(作者)(例如那些在TAG之前没有提交过的人)?假设
git shortlog -s -e -n TAG..
评审员:
git log TAG.. | grep -Ei '(reviewed|acked)-by:' |sed 's/.*by: //' | sort | uniq -c | sort -n -r
提交人:
git shortlog -s -e -n -c TAG..
但是如何列出
TAG
之后的新贡献者(作者)(例如那些在TAG
之前没有提交过的人)?假设您可以使用bash
,至少有两种方法:
#/bin/bash
set-e
OLD_COMMIT=“$1”
NEW_COMMIT=“$2”
如果test-z“$OLD_COMMIT”| | test-z“$NEW_COMMIT”;然后
echo“致命:必须提供旧的提交和新的提交”>&2
出口1
fi
班次2
首先,使用Bash4中引入的声明性数组(以命令式方式模拟右外部联接):
declare-一个老作者
而读r老作者;做
老作者[“$OLD_AUTHOR”]=1
做了。<非常感谢!我希望会有一艘邮轮:)。Adbash
:我想把它转换成posix shell(没有像数组那样的bashism),以便能够在busybox sh
中使用它(ash
实现,在Alpine Linux中使用),但这是一个小细节。@pevik您在问题中没有提到这一点。我通常不会想到bash,因为我只使用bash,但第二个“4行程序”似乎也是一个。在您的情况下,我认为应该使用临时文件?谢谢您的回答,它是有效的(因此我将其标记为有效)。我问这个问题的原因是想知道是否存在类似于git shortlog
的git上游解决方案。编写一个自定义脚本来解决这个问题并不困难,但我正在考虑将此功能上游到git shortloggit中。
c3d766e (tag: v2) Keith
cffddc6 New John
ee3cc52 Dan
c307f13 (tag: v1) New John
ae3c4a3 New John
9ed948e Old John
7eb548a Old John
Dan
Keith