for-each-ref: add '--contains' option
Add the '--contains' option provided by 'ref-filter'. The '--contains' option lists only refs which contain the mentioned commit (HEAD if no commit is explicitly given). Add documentation and tests for the same. Mentored-by: Christian Couder <christian.couder@gmail.com> Mentored-by: Matthieu Moy <matthieu.moy@grenoble-inp.fr> Signed-off-by: Karthik Nayak <karthik.188@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
ee2bd06b0f
commit
4a71109aa4
@ -11,6 +11,7 @@ SYNOPSIS
|
||||
'git for-each-ref' [--count=<count>] [--shell|--perl|--python|--tcl]
|
||||
[(--sort=<key>)...] [--format=<format>] [<pattern>...]
|
||||
[--points-at <object>] [(--merged | --no-merged) [<object>]]
|
||||
[--contains [<object>]]
|
||||
|
||||
DESCRIPTION
|
||||
-----------
|
||||
@ -74,6 +75,10 @@ OPTIONS
|
||||
Only list refs whose tips are not reachable from the
|
||||
specified commit (HEAD if not specified).
|
||||
|
||||
--contains [<object>]::
|
||||
Only list tags which contain the specified commit (HEAD if not
|
||||
specified).
|
||||
|
||||
FIELD NAMES
|
||||
-----------
|
||||
|
||||
|
@ -9,6 +9,7 @@ static char const * const for_each_ref_usage[] = {
|
||||
N_("git for-each-ref [<options>] [<pattern>]"),
|
||||
N_("git for-each-ref [--points-at <object>]"),
|
||||
N_("git for-each-ref [(--merged | --no-merged) [<object>]]"),
|
||||
N_("git for-each-ref [--contains [<object>]]"),
|
||||
NULL
|
||||
};
|
||||
|
||||
@ -41,6 +42,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
|
||||
parse_opt_object_name),
|
||||
OPT_MERGED(&filter, N_("print only refs that are merged")),
|
||||
OPT_NO_MERGED(&filter, N_("print only refs that are not merged")),
|
||||
OPT_CONTAINS(&filter.with_commit, N_("print only refs which contain the commit")),
|
||||
OPT_END(),
|
||||
};
|
||||
|
||||
|
@ -66,4 +66,19 @@ test_expect_success 'filtering with --no-merged' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_expect_success 'filtering with --contains' '
|
||||
cat >expect <<-\EOF &&
|
||||
refs/heads/master
|
||||
refs/heads/side
|
||||
refs/odd/spot
|
||||
refs/tags/double-tag
|
||||
refs/tags/four
|
||||
refs/tags/signed-tag
|
||||
refs/tags/three
|
||||
refs/tags/two
|
||||
EOF
|
||||
git for-each-ref --format="%(refname)" --contains=two >actual &&
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
test_done
|
||||
|
Loading…
Reference in New Issue
Block a user