Jeff King <peff@xxxxxxxx> writes: > ... we may > want some kind of "literal" mode, that takes in a list of refs rather > than a list of patterns, and does a sorted-merge with the list of > available refs (or uses a hash table, I guess, but for-each-ref also > tries to avoid even being linear in the total number of refs, so you'd > still want to find the lowest/highest to bound the iteration). Exactly. I actually was wondering if "literal" mode can just take a list of <things>, and when a <thing> is not a refname, use it as if it were. I.e. %(refname) would parrot it, while %(refname:short) would not shorten and still parrot it, if the <thing> is 73876f4861c, but something like %(subject) would still work. For that, I suspect ref-filter.c::filter_refs() would need to learn a different kind fo finter->kind that iterates over the literal "refs" that was fed from the standard input, instead of calling for_each_fullref_in() for the given hierarchy, but the new iterator should be able to reuse the ref_filter_hander() for the heavy lifting.