From: Jens Lehmann <Jens.Lehmann@web.de>
To: Junio C Hamano <gitster@pobox.com>, 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>
Subject: Re: [PATCH v3 4/8] combine-diff: do not pass revs->dense_combined_merges redundantly
Date: Thu, 11 Sep 2014 21:37:45 +0200 [thread overview]
Message-ID: <5411FA09.3050303@web.de> (raw)
In-Reply-To: <xmqqvboynhq2.fsf@gitster.dls.corp.google.com>
Am 08.09.2014 um 19:29 schrieb Junio C Hamano:
> 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.
The only thing the collect_submodules_from_diff() callback does
is to collect the to-be-pushed submodules in the needs_pushing
string_list initialized with STRING_LIST_INIT_DUP which is cleared
at the end of push_unpushed_submodules(), so I think we should be
ok here.
next prev parent reply other threads:[~2014-09-11 19:38 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
2014-09-11 19:37 ` Jens Lehmann [this message]
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=5411FA09.3050303@web.de \
--to=jens.lehmann@web.de \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--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.