All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: Thomas Rast <tr@thomasrast.ch>
Cc: git@vger.kernel.org, Jonathan Nieder <jrnieder@gmail.com>,
	Eric Sunshine <sunshine@sunshineco.com>,
	Fredrik Gustafsson <iveqy@iveqy.com>,
	Jens Lehmann <Jens.Lehmann@web.de>
Subject: Re: [PATCH v3 4/8] combine-diff: do not pass revs->dense_combined_merges redundantly
Date: Mon, 08 Sep 2014 10:29:41 -0700	[thread overview]
Message-ID: <xmqqvboynhq2.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: <33951a1d4be8ec15eec569e1a36c0a620b9edaa6.1409860234.git.tr@thomasrast.ch> (Thomas Rast's message of "Sat, 6 Sep 2014 19:57:02 +0200")

Thomas Rast <tr@thomasrast.ch> writes:

> The existing code passed revs->dense_combined_merges along revs itself
> into the combine-diff functions, which is rather redundant.  Remove
> the 'dense' argument until much further down the callchain to simplify
> callers.

It was not apparent that the changes to diff_tree_combined_merge()
was correct without looking at both of its callsites, but one passes
the .dense_combined_merges member, and the other in submodules
always gives true, which you covered here:

> Note that while the caller in submodule.c needs to do extra work now,
> the next commit will simplify this to a single setting again.

> diff --git a/submodule.c b/submodule.c
> index c3a61e7..0499de6 100644
> --- a/submodule.c
> +++ b/submodule.c
> @@ -482,10 +482,13 @@ static void find_unpushed_submodule_commits(struct commit *commit,
>  	struct rev_info rev;
>  
>  	init_revisions(&rev, NULL);
> +	rev.ignore_merges = 0;
> +	rev.combined_merges = 1;
> +	rev.dense_combined_merges = 1;
>  	rev.diffopt.output_format |= DIFF_FORMAT_CALLBACK;
>  	rev.diffopt.format_callback = collect_submodules_from_diff;
>  	rev.diffopt.format_callback_data = needs_pushing;
> -	diff_tree_combined_merge(commit, 1, &rev);
> +	diff_tree_combined_merge(commit, &rev);
>  }

I briefly wondered if there can be any unwanted side effects in this
particular codepath that is caused by setting rev.combined_merges
which was not set in the original code, but seeing that this &rev is
not used for anything other than diff_tree_combined_merge(), it
should be OK.

Also I wondered if this is leaking whatever in the &rev structure,
but in this call I think rev is used only for its embedded diffopt
in a way that does not leak anything, so it seems to be OK, but I'd
appreciate if submodule folks can double check.

Thanks.

  reply	other threads:[~2014-09-08 17:29 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-06 17:56 [PATCH v3 0/8] --remerge-diff Thomas Rast
2014-09-06 17:56 ` [PATCH v3 1/8] merge-recursive: remove dead conditional in update_stages() Thomas Rast
2014-09-06 17:57 ` [PATCH v3 2/8] merge-recursive: internal flag to avoid touching the worktree Thomas Rast
2014-09-08 17:37   ` Junio C Hamano
2014-09-06 17:57 ` [PATCH v3 3/8] merge-recursive: -Xindex-only to leave worktree unchanged Thomas Rast
2014-09-06 17:57 ` [PATCH v3 4/8] combine-diff: do not pass revs->dense_combined_merges redundantly Thomas Rast
2014-09-08 17:29   ` Junio C Hamano [this message]
2014-09-11 19:37     ` Jens Lehmann
2014-09-06 17:57 ` [PATCH v3 5/8] Fold all merge diff variants into an enum Thomas Rast
2014-09-08 17:36   ` Junio C Hamano
2014-09-06 17:57 ` [PATCH v3 6/8] merge-recursive: allow storing conflict hunks in index Thomas Rast
2014-09-09 17:47   ` Junio C Hamano
2014-09-06 17:57 ` [PATCH v3 7/8] name-hash: allow dir hashing even when !ignore_case Thomas Rast
2014-09-09 17:49   ` Junio C Hamano
2014-09-06 17:57 ` [PATCH v3 8/8] log --remerge-diff: show what the conflict resolution changed Thomas Rast
2014-09-08 18:28   ` Junio C Hamano
2014-09-09 18:58   ` Junio C Hamano
2014-09-09 19:08   ` Junio C Hamano

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=xmqqvboynhq2.fsf@gitster.dls.corp.google.com \
    --to=gitster@pobox.com \
    --cc=Jens.Lehmann@web.de \
    --cc=git@vger.kernel.org \
    --cc=iveqy@iveqy.com \
    --cc=jrnieder@gmail.com \
    --cc=sunshine@sunshineco.com \
    --cc=tr@thomasrast.ch \
    /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.