Hi, Thanks for the review on the previous version of this series. Here is a quick re-roll to address the minor changes that you left on the previous version (apart from the suggestions to PATCH 1/2). Please queue this instead. PATCH 1/2 - Left unchanged PATCH 2/2 - Used the test helper function `test_must_fail` instead of something like "! git foo" for making a command fail. Kousik Sanagavarapu (2): ref-filter: add multiple-option parsing functions ref-filter: add new "describe" atom Documentation/git-for-each-ref.txt | 23 +++ ref-filter.c | 230 +++++++++++++++++++++++++++++ t/t6300-for-each-ref.sh | 139 +++++++++++++++++ 3 files changed, 392 insertions(+) Range-diff against v4: 1: 2914bd58ec = 1: 2914bd58ec ref-filter: add multiple-option parsing functions 2: 77a2a56520 ! 2: 8127f4399c ref-filter: add new "describe" atom @@ t/t6300-for-each-ref.sh: test_expect_success 'color.ui=always does not override + cat >expect <<-\EOF && + fatal: unrecognized %(describe) argument: baz + EOF -+ ! git for-each-ref --format="%(describe:baz)" \ ++ test_must_fail git for-each-ref \ ++ --format="%(describe:baz)" \ + refs/heads/master 2>actual && + test_cmp expect actual && + @@ t/t6300-for-each-ref.sh: test_expect_success 'color.ui=always does not override + cat >expect <<-\EOF && + fatal: unrecognized %(describe) argument: qux=1,abbrev=14 + EOF -+ ! git for-each-ref \ ++ test_must_fail git for-each-ref \ + --format="%(describe:tags,qux=1,abbrev=14)" \ + ref/heads/master 2>actual && + test_cmp expect actual -- 2.41.0.396.g77a2a56520