From: Karthik Nayak <karthik.188@gmail.com>
To: git@vger.kernel.org
Cc: christian.couder@gmail.com, Matthieu.Moy@grenoble-inp.fr,
Karthik Nayak <karthik.188@gmail.com>
Subject: [PATCH v7 07/11] for-each-ref: add '--merged' and '--no-merged' options
Date: Thu, 2 Jul 2015 20:51:06 +0530 [thread overview]
Message-ID: <1435850470-5175-7-git-send-email-karthik.188@gmail.com> (raw)
In-Reply-To: <1435850470-5175-1-git-send-email-karthik.188@gmail.com>
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>
---
Documentation/git-for-each-ref.txt | 10 +++++++++-
builtin/for-each-ref.c | 3 +++
t/t6302-for-each-ref-filter.sh | 23 +++++++++++++++++++++++
3 files changed, 35 insertions(+), 1 deletion(-)
diff --git a/Documentation/git-for-each-ref.txt b/Documentation/git-for-each-ref.txt
index f115335..bf8b24a 100644
--- a/Documentation/git-for-each-ref.txt
+++ b/Documentation/git-for-each-ref.txt
@@ -10,7 +10,7 @@ SYNOPSIS
[verse]
'git for-each-ref' [--count=<count>] [--shell|--perl|--python|--tcl]
[(--sort=<key>)...] [--format=<format>] [<pattern>...]
- [--points-at <object>]
+ [--points-at <object>] [(--merged | --no-merged) [<object>]]
DESCRIPTION
-----------
@@ -66,6 +66,14 @@ OPTIONS
--points-at <object>::
Only list refs pertaining to 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
-----------
diff --git a/builtin/for-each-ref.c b/builtin/for-each-ref.c
index 5b6f93a..120b753 100644
--- a/builtin/for-each-ref.c
+++ b/builtin/for-each-ref.c
@@ -8,6 +8,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>]]"),
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,
N_("object"), N_("print only refs pertaining to the given object"),
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(),
};
diff --git a/t/t6302-for-each-ref-filter.sh b/t/t6302-for-each-ref-filter.sh
index 457991f..73dbf53 100755
--- a/t/t6302-for-each-ref-filter.sh
+++ b/t/t6302-for-each-ref-filter.sh
@@ -37,4 +37,27 @@ test_expect_success 'check signed tags with --points-at' '
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
--
2.4.4
next prev parent reply other threads:[~2015-07-02 15:22 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-02 15:20 [PATCH v7 00/11] add options to for-each-ref Karthik Nayak
2015-07-02 15:21 ` [PATCH v7 01/11] t6302: for-each-ref tests for ref-filter APIs Karthik Nayak
2015-07-02 15:21 ` [PATCH v7 02/11] tag: libify parse_opt_points_at() Karthik Nayak
2015-07-02 15:21 ` [PATCH v7 03/11] ref-filter: implement '--points-at' option Karthik Nayak
2015-07-02 15:21 ` [PATCH v7 04/11] for-each-ref: add " Karthik Nayak
2015-07-02 17:05 ` Matthieu Moy
2015-07-05 16:01 ` Karthik Nayak
2015-07-02 15:21 ` [PATCH v7 05/11] ref-filter: add parse_opt_merge_filter() Karthik Nayak
2015-07-02 17:06 ` Matthieu Moy
2015-07-02 17:21 ` Karthik Nayak
2015-07-02 15:21 ` [PATCH v7 06/11] ref-filter: implement '--merged' and '--no-merged' options Karthik Nayak
2015-07-02 15:21 ` Karthik Nayak [this message]
2015-07-02 15:21 ` [PATCH v7 08/11] parse-option: rename parse_opt_with_commit() Karthik Nayak
2015-07-02 15:21 ` [PATCH v7 09/11] parse-options.h: add macros for '--contains' option Karthik Nayak
2015-07-02 17:08 ` Matthieu Moy
2015-07-02 17:22 ` Karthik Nayak
2015-07-02 15:21 ` [PATCH v7 10/11] ref-filter: implement " Karthik Nayak
2015-07-02 17:12 ` Matthieu Moy
2015-07-02 17:24 ` Karthik Nayak
2015-07-02 15:21 ` [PATCH v7 11/11] for-each-ref: add " Karthik Nayak
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1435850470-5175-7-git-send-email-karthik.188@gmail.com \
--to=karthik.188@gmail.com \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.