From: Felipe Contreras <felipe.contreras@gmail.com>
To: git@vger.kernel.org
Cc: "René Scharfe" <l.s.r@web.de>,
"Felipe Contreras" <felipe.contreras@gmail.com>
Subject: Re: [PATCH] revision: add --except option
Date: Fri, 30 Aug 2013 00:40:25 -0500 [thread overview]
Message-ID: <CAMP44s2=S=6_DAVuiG+0iO+rxQuPqqsL8fEtzGkSxJfaBu3hdQ@mail.gmail.com> (raw)
In-Reply-To: <1377838805-7693-1-git-send-email-felipe.contreras@gmail.com>
On Fri, Aug 30, 2013 at 12:00 AM, Felipe Contreras
<felipe.contreras@gmail.com> wrote:
> So that it's possible to remove certain refs from the list without
> removing the objects that are referenced by other refs.
>
> For example this repository:
>
> * 374e8dd (crap) crap
> * 4cbbf7b (test) two
> * d025ae0 (HEAD, master) one
>
> When using '--branches --except crap':
>
> * 4cbbf7b (test) two
> * d025ae0 (HEAD, master) one
>
> But when using '--branches --not crap' nothing will come out.
Doesn't work with certain refs, here's a fix:
diff --git a/revision.c b/revision.c
index 375adab..25564c1 100644
--- a/revision.c
+++ b/revision.c
@@ -2575,6 +2575,13 @@ void reset_revision_walk(void)
clear_object_flags(SEEN | ADDED | SHOWN);
}
+static int refcmp(const char *a, const char *b)
+{
+ a = prettify_refname(a);
+ b = prettify_refname(b);
+ return strcmp(a, b);
+}
+
int prepare_revision_walk(struct rev_info *revs)
{
int nr = revs->pending.nr;
@@ -2591,7 +2598,7 @@ int prepare_revision_walk(struct rev_info *revs)
for (i = 0; i < revs->cmdline.nr; i++) {
struct rev_cmdline_entry *ce;
ce = &revs->cmdline.rev[i];
- if ((ce->flags & SKIP) && !strcmp(ce->name, e->name))
+ if ((ce->flags & SKIP) && !refcmp(ce->name, e->name))
goto next;
}
if (commit) {
diff --git a/t/t6112-rev-list-except.sh b/t/t6112-rev-list-except.sh
index b8f9a61..a295f43 100755
--- a/t/t6112-rev-list-except.sh
+++ b/t/t6112-rev-list-except.sh
@@ -32,4 +32,11 @@ test_expect_success 'rev-list --except with extra' '
test_cmp expect actual
'
+test_expect_success 'rev-list --except with full ref' '
+
+ git rev-list --topo-order --branches --except refs/heads/merge
> actual &&
+ git rev-list --topo-order test > expect &&
+ test_cmp expect actual
+'
+
test_done
--
Felipe Contreras
next prev parent reply other threads:[~2013-08-30 5:40 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-30 5:00 [PATCH] revision: add --except option Felipe Contreras
2013-08-30 5:40 ` Felipe Contreras [this message]
2013-08-30 6:32 ` Junio C Hamano
2013-08-30 7:17 ` Felipe Contreras
[not found] ` <CAPc5daVSqoE74kmsobg7RpMtiL3vzKN+ckAcWEKU_Q_wF8HYuA@mail.gmail.com>
2013-08-30 7:32 ` Felipe Contreras
2013-08-30 9:08 ` Johannes Sixt
2013-08-30 16:48 ` Junio C Hamano
2013-08-30 18:37 ` Felipe Contreras
2013-08-30 23:55 ` [PATCH] revision: introduce --exclude=<glob> to tame wildcards Junio C Hamano
2013-08-31 0:22 ` Duy Nguyen
2013-08-31 0:29 ` Junio C Hamano
2013-08-31 19:33 ` Felipe Contreras
2013-09-03 15:45 ` Junio C Hamano
2013-09-03 22:03 ` Felipe Contreras
2013-09-02 20:11 ` Johannes Sixt
2013-09-02 23:09 ` Felipe Contreras
2013-09-03 4:05 ` Michael Haggerty
2013-09-03 16:03 ` Junio C Hamano
2013-09-03 20:02 ` Johannes Sixt
2013-11-01 19:34 ` [PATCH 0/5] ref glob exclusion follow-up Junio C Hamano
2013-11-01 19:34 ` [PATCH 3/5] rev-list --exclude: tests Junio C Hamano
2013-11-01 19:34 ` [PATCH 4/5] rev-list --exclude: export add/clear-ref-exclusion and ref-excluded API Junio C Hamano
2013-11-01 19:34 ` [PATCH 5/5] rev-parse: introduce --exclude=<glob> to tame wildcards Junio C Hamano
2013-11-01 19:43 ` Eric Sunshine
2013-11-01 20:01 ` Junio C Hamano
2013-11-01 21:08 ` [PATCH 0/5] ref glob exclusion follow-up Johannes Sixt
2013-08-30 7:56 ` [PATCH] revision: add --except option Johannes Sixt
2013-08-31 19:27 ` Felipe Contreras
2013-09-02 6:25 ` Johannes Sixt
2013-09-02 6:48 ` Felipe Contreras
2013-08-30 7:11 ` Johannes Sixt
2013-08-30 7:24 ` Felipe Contreras
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='CAMP44s2=S=6_DAVuiG+0iO+rxQuPqqsL8fEtzGkSxJfaBu3hdQ@mail.gmail.com' \
--to=felipe.contreras@gmail.com \
--cc=git@vger.kernel.org \
--cc=l.s.r@web.de \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).