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:

committed by
Junio C Hamano

parent
ee2bd06b0f
commit
4a71109aa4
@ -11,6 +11,7 @@ SYNOPSIS
|
|||||||
'git for-each-ref' [--count=<count>] [--shell|--perl|--python|--tcl]
|
'git for-each-ref' [--count=<count>] [--shell|--perl|--python|--tcl]
|
||||||
[(--sort=<key>)...] [--format=<format>] [<pattern>...]
|
[(--sort=<key>)...] [--format=<format>] [<pattern>...]
|
||||||
[--points-at <object>] [(--merged | --no-merged) [<object>]]
|
[--points-at <object>] [(--merged | --no-merged) [<object>]]
|
||||||
|
[--contains [<object>]]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
@ -74,6 +75,10 @@ OPTIONS
|
|||||||
Only list refs whose tips are not reachable from the
|
Only list refs whose tips are not reachable from the
|
||||||
specified commit (HEAD if not specified).
|
specified commit (HEAD if not specified).
|
||||||
|
|
||||||
|
--contains [<object>]::
|
||||||
|
Only list tags which contain the specified commit (HEAD if not
|
||||||
|
specified).
|
||||||
|
|
||||||
FIELD NAMES
|
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 [<options>] [<pattern>]"),
|
||||||
N_("git for-each-ref [--points-at <object>]"),
|
N_("git for-each-ref [--points-at <object>]"),
|
||||||
N_("git for-each-ref [(--merged | --no-merged) [<object>]]"),
|
N_("git for-each-ref [(--merged | --no-merged) [<object>]]"),
|
||||||
|
N_("git for-each-ref [--contains [<object>]]"),
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -41,6 +42,7 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
|
|||||||
parse_opt_object_name),
|
parse_opt_object_name),
|
||||||
OPT_MERGED(&filter, N_("print only refs that are merged")),
|
OPT_MERGED(&filter, N_("print only refs that are merged")),
|
||||||
OPT_NO_MERGED(&filter, N_("print only refs that are not 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(),
|
OPT_END(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -66,4 +66,19 @@ test_expect_success 'filtering with --no-merged' '
|
|||||||
test_cmp expect actual
|
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
|
test_done
|
||||||
|
Reference in New Issue
Block a user