From: Junio C Hamano <gitster@pobox.com>
To: Karthik Nayak <karthik.188@gmail.com>
Cc: git@vger.kernel.org, christian.couder@gmail.com,
Matthieu.Moy@grenoble-inp.fr
Subject: Re: [PATCH v6 06/11] ref-filter: implement '--merged' and '--no-merged' options
Date: Mon, 29 Jun 2015 11:03:37 -0700 [thread overview]
Message-ID: <xmqqegkubddy.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <1435222633-32007-6-git-send-email-karthik.188@gmail.com> (Karthik Nayak's message of "Thu, 25 Jun 2015 14:27:08 +0530")
Karthik Nayak <karthik.188@gmail.com> writes:
> +static void do_merge_filter(struct ref_filter_cbdata *ref_cbdata)
> +{
> + struct rev_info revs;
> + int i, old_nr;
> + struct ref_filter *filter = ref_cbdata->filter;
> + struct ref_array *array = ref_cbdata->array;
> + struct commit **to_clear = xcalloc(sizeof(struct commit *), array->nr);
> +
> + init_revisions(&revs, NULL);
> +
> + for (i = 0; i < array->nr; i++) {
> + struct ref_array_item *item = array->items[i];
> + add_pending_object(&revs, &item->commit->object, item->refname);
> + to_clear[i] = item->commit;
> + }
> +
> + filter->merge_commit->object.flags |= UNINTERESTING;
> + add_pending_object(&revs, &filter->merge_commit->object, "");
> +
> + revs.limited = 1;
> + if (prepare_revision_walk(&revs))
> + die(_("revision walk setup failed"));
> +
> + old_nr = array->nr;
> + array->nr = 0;
> +
> + for (i = 0; i < old_nr; i++) {
> + struct ref_array_item *item = array->items[i];
> + struct commit *commit = item->commit;
> +
> + int is_merged = !!(commit->object.flags & UNINTERESTING);
> +
> + if (is_merged == (filter->merge == REF_FILTER_MERGED_INCLUDE))
> + array->items[array->nr++] = array->items[i];
> + else
> + free_array_item(item);
> + }
> +
> + for (i = 0; i < old_nr; i++)
> + clear_commit_marks(to_clear[i], ALL_REV_FLAGS);
> + clear_commit_marks(filter->merge_commit, ALL_REV_FLAGS);
> + free(to_clear);
> +}
Did this come from somewhere else (e.g. tag -l or branch -l)? If
so, you'd need a note similar to what you added in [02/11] to the
original.
I also have a feeling that compared to an implementation based on
paint_down_to_common(), including is_descendant_of(), this may be
less precise (e.g. it would be confused with clock skew that lasts
more than SLOP commits). If we are inventing a new helper (as
opposed to moving an existing one), we'd probably be better off
doing a thin wrapper around paint_down_to_common() than calling
revision-walk machinery.
next prev parent reply other threads:[~2015-06-29 18:03 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-25 8:46 [PATCH v6 00/11] add options to for-each-ref Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 01/11] t6302: for-each-ref tests for ref-filter APIs Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 02/11] tag: libify parse_opt_points_at() Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 03/11] ref-filter: implement '--points-at' option Karthik Nayak
2015-06-29 17:40 ` Junio C Hamano
2015-06-29 19:37 ` Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 04/11] for-each-ref: add " Karthik Nayak
2015-06-29 17:46 ` Junio C Hamano
2015-06-29 19:55 ` Karthik Nayak
2015-06-29 18:38 ` Junio C Hamano
2015-06-29 19:11 ` Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 05/11] ref-filter: add parse_opt_merge_filter() Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 06/11] ref-filter: implement '--merged' and '--no-merged' options Karthik Nayak
2015-06-29 18:03 ` Junio C Hamano [this message]
2015-06-29 18:28 ` Junio C Hamano
2015-06-30 13:38 ` Karthik Nayak
2015-06-30 15:58 ` Junio C Hamano
2015-06-30 16:04 ` Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 07/11] for-each-ref: add " Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 08/11] parse-option: rename parse_opt_with_commit() Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 09/11] parse-options.h: add macros for '--contains' option Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 10/11] ref-filter: implement " Karthik Nayak
2015-06-25 8:57 ` [PATCH v6 11/11] for-each-ref: add " Karthik Nayak
2015-06-29 18:14 ` [PATCH v6 01/11] t6302: for-each-ref tests for ref-filter APIs Junio C Hamano
2015-06-29 18:43 ` 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=xmqqegkubddy.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox.com \
--cc=Matthieu.Moy@grenoble-inp.fr \
--cc=christian.couder@gmail.com \
--cc=git@vger.kernel.org \
--cc=karthik.188@gmail.com \
/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.