我们公司分成小组,在将代码发送给QA人员之前,我们会进行代码审查。
通常,我们触摸的任何代码都会由同一个团队中的某个人审核(A),但在某些情况下,我们还需要触摸其他团队的代码(B)。
对于这些情况,代码审核应该是双重的:一个部分由A组审核,另一部分由B团队审核。
我们的问题是,A队很多时候都没有发送要由B队审核的代码,这导致B队不知道这个新代码。
我想做的是定期运行一个脚本来查找代码某些部分内的提交(通常是我们团队处理的模块的子目录)由任何不属于我们团队的人 ,但遗憾的是--not
中的git log
参数似乎不适用于--author
,因此我无法愉快地运行git log --not --author "John" --author "Paul" --author "Ringo" module/A module/B module/C
我的要求转换为“列出所有提交触摸模块/ A,模块/ B或模块/ C由不是John,Paul或Ringo 的人完成”
有没有办法使用“官方”工具?我也会对开源脚本感兴趣,如果它意味着以单行或接近的方式做到这一点。
答案 0 :(得分:5)
编辑:这应该显示提交作者姓名不包含“John”“Paul”或“Ringo”。需要使用PCRE构建git。
git log --perl-regexp --author='^(?!(.*(John|Paul|Ringo)))'
我将在下面留下以前的变体,因为它们仍有一些用途:
如果您的git是使用PCRE支持编译的,那么你应该能够使用负面的后台断言来做到这一点。这样的事情应该做你想做的事情:
git log --perl-regexp --author='(?<!(john|paul|ringo))@'
请注意,正则表达式实际上是在@
之前查找john|paul|ringo
而不是。使用名称来实现这一点将会很棘手,因为可能没有一种方便的方法来找到一个没有您想要排除的名称的“锚点”。
您可以尝试锚定作者行的开头并仅显示无法启动1>}的提交(即,仍然会显示以John作为中间名的提交):< / p>
John|Paul|Ringo