for-each-ref: add '--merged' and '--no-merged' options
Add the '--merged' and '--no-merged' options provided by 'ref-filter'. The '--merged' option lets the user to only list refs merged into the named commit. The '--no-merged' option lets the user to only list refs not merged into the named commit. Add documentation and tests for the same. Based-on-patch-by: Jeff King <peff@peff.net> 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>maint
parent
35257aa012
commit
7c32834813
|
@ -10,7 +10,7 @@ SYNOPSIS
|
||||||
[verse]
|
[verse]
|
||||||
'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>]
|
[--points-at <object>] [(--merged | --no-merged) [<object>]]
|
||||||
|
|
||||||
DESCRIPTION
|
DESCRIPTION
|
||||||
-----------
|
-----------
|
||||||
|
@ -66,6 +66,14 @@ OPTIONS
|
||||||
--points-at <object>::
|
--points-at <object>::
|
||||||
Only list refs which points at the given object.
|
Only list refs which points at the given object.
|
||||||
|
|
||||||
|
--merged [<object>]::
|
||||||
|
Only list refs whose tips are reachable from the
|
||||||
|
specified commit (HEAD if not specified).
|
||||||
|
|
||||||
|
--no-merged [<object>]::
|
||||||
|
Only list refs whose tips are not reachable from the
|
||||||
|
specified commit (HEAD if not specified).
|
||||||
|
|
||||||
FIELD NAMES
|
FIELD NAMES
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
static char const * const for_each_ref_usage[] = {
|
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>]]"),
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -38,6 +39,8 @@ int cmd_for_each_ref(int argc, const char **argv, const char *prefix)
|
||||||
OPT_CALLBACK(0, "points-at", &filter.points_at,
|
OPT_CALLBACK(0, "points-at", &filter.points_at,
|
||||||
N_("object"), N_("print only refs which points at the given object"),
|
N_("object"), N_("print only refs which points at the given object"),
|
||||||
parse_opt_object_name),
|
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_END(),
|
OPT_END(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -43,4 +43,27 @@ test_expect_success 'check signed tags with --points-at' '
|
||||||
test_cmp expect actual
|
test_cmp expect actual
|
||||||
'
|
'
|
||||||
|
|
||||||
|
test_expect_success 'filtering with --merged' '
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
refs/heads/master
|
||||||
|
refs/odd/spot
|
||||||
|
refs/tags/one
|
||||||
|
refs/tags/three
|
||||||
|
refs/tags/two
|
||||||
|
EOF
|
||||||
|
git for-each-ref --format="%(refname)" --merged=master >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
|
test_expect_success 'filtering with --no-merged' '
|
||||||
|
cat >expect <<-\EOF &&
|
||||||
|
refs/heads/side
|
||||||
|
refs/tags/double-tag
|
||||||
|
refs/tags/four
|
||||||
|
refs/tags/signed-tag
|
||||||
|
EOF
|
||||||
|
git for-each-ref --format="%(refname)" --no-merged=master >actual &&
|
||||||
|
test_cmp expect actual
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Loading…
Reference in New Issue