Karthik Nayak <karthik.188@xxxxxxxxx> writes: > This adds %(path) and %(path:short) atoms. The %(path) atom will print > the path of the given ref, while %(path:short) will only print the > subdirectory of the given ref. What does "path" mean in this context? How is it different from %(refname)? I found the answer below, but I could not guess from the doc and commit message. Actually, I'm not sure %(path) is the right name. If you want the "file/directory" analogy, then %(dirname) would be better. > + } else if (match_atom_name(name, "path", &valp)) { > + const char *sp, *ep; > + > + if (ref->kind & FILTER_REFS_DETACHED_HEAD) > + continue; > + > + sp = strchr(ref->refname, '/'); > + ep = strchr(++sp, '/'); This assumes you have two / in the fullrefname. It is normally the case, but one can also create eg. refs/foo references. AFAIK, in this case sp will be NULL, and you're then calling strchr(++NULL) which may segfault. > diff --git a/t/t6302-for-each-ref-filter.sh b/t/t6302-for-each-ref-filter.sh > index d7f7a18..5557657 100755 > --- a/t/t6302-for-each-ref-filter.sh > +++ b/t/t6302-for-each-ref-filter.sh > @@ -312,6 +312,7 @@ test_expect_success 'check %(if:equals=<string>)' ' > test_cmp expect actual > ' > > + > test_expect_success 'check %(if:notequals=<string>)' ' Useless new blank line. > +test_expect_success 'check %(path)' ' > + git for-each-ref --format="%(path)" >actual && > + cat >expect <<-\EOF && > + refs/heads You should add eg. git update-ref refs/foo HEAD git update-ref refs/foodir/bar/boz HEAD before the test to check and document the behavior for such refnames. -- Matthieu Moy http://www-verimag.imag.fr/~moy/ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html