On 6/7/2023 7:02 PM, Taylor Blau wrote: > This means that you could easily view the hashes of all commits you > either wrote or co-authored with something like: > > $ git shortlog -n --group=author --group=trailer:Co-authored-by \ > --group-filter="$(git config user.name)" > > When filtering just by trailers, it is tempting to want to introduce a > new grep mode for matching a given trailer, like `--author=<pattern>` > for matching the author header. But this would not be suitable for the > above, since we want commits which match either the author or the > Co-authored-by trailer, not ones which match both. One thing that is not immediately obvious from reading the patch, but becomes clearer in patch 2, is that your --group-filter is an exact string match. This differs from the --author filter in 'git log' and similar, which is actually a case-insensitive substring match. > +static int want_shortlog_group(struct shortlog *log, const char *group) > +{ > + if (!log->group_filter.nr) > + return 1; > + return string_list_has_string(&log->group_filter, group); > +} > + This is the critical piece of code for this issue. Replacing it with static int want_shortlog_group(struct shortlog *log, const char *group) { struct string_list_item *item; if (!log->group_filter.nr) return 1; for_each_string_list_item(item, &log->group_filter) { if (strcasestr(group, item->string)) return 1; } return 0; } Results in the case-insensitive substring search that I would expect from this parameter. This would also solve the problem from Patch 2 where we want to search by email address. Using '-e --group-filter="my@xxxxxxxxx"' works, though it will catch users with 'tammy@xxxxxxxxx' emails, as well. Something to consider at a high level before committing to this CLI. Thanks, -Stolee