From: Elijah Newren <newren@gmail.com> To: Johannes Schindelin <Johannes.Schindelin@gmx.de> Cc: Junio C Hamano <gitster@pobox.com>, Ben Peart <peartben@gmail.com>, Ben Peart <Ben.Peart@microsoft.com>, "git@vger.kernel.org" <git@vger.kernel.org>, "peff@peff.net" <peff@peff.net>, "pclouds@gmail.com" <pclouds@gmail.com>, "vmiklos@frugalware.org" <vmiklos@frugalware.org>, Kevin Willford <kewillf@microsoft.com>, "eckhard.s.maass@googlemail.com" <eckhard.s.maass@googlemail.com> Subject: Re: [PATCH v3 2/3] merge: Add merge.renames config setting Date: Fri, 27 Apr 2018 07:32:56 -0700 [thread overview] Message-ID: <CABPp-BEoY3bLQVNzfcxKqfXktdpfq0m7yaExM0f3-Ad+Mi0GBQ@mail.gmail.com> (raw) In-Reply-To: <nycvar.QRO.7.76.6.1804270918430.72@tvgsbejvaqbjf.bet> Hi Dsco, On Fri, Apr 27, 2018 at 12:23 AM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote: > Hi, <snip> > > Guys, you argued long and hard that one config setting (diff.renames) > should magically imply another one (merge.renames), on the basis that they > essentially do the same. I apologize for any frustration; I've probably caused a good deal of it by repeatedly catching or noticing things after one review and then bringing them up later. I just didn't catch it all at first. Your restatement of the basis of the argument doesn't match my rationale, though. My reasoning was that (1) the configuration options exist to allow the user to specify how much of a performance cost they're willing to pay, (2) the two options are separate because some users might want to configure one more loosely or tightly than the other, but (3) many users will want to just specify once how much they are willing to pay without being forced to repeat themselves for different parts of git (diff, merge, possible future commands). I'll add to my former basis by stating that I think the diffstat at the end of the merge should be controlled by these variables, even if that's not implemented as part of Ben's series. And both of those configuration options clearly feed into whether that diffstat should be doing rename or copy or no detection. While they could be kept separate options, forcing us to somehow decide which one overrides which, I think it's much more natural if we already have merge.renames inheriting from and overriding diff.renames. > And now you are suggesting that they *cannot* be essentially the same? Are > you agreeing on such a violation of the Law of Least Surprise? > > Please, make up your mind. Inheriting merge.renames from diff.renames is > "magic" enough to be puzzling. Introducing that auto-demoting is just > simply creating a bad user experience. Please don't. From my view, resolve and octopus merges auto-demote diff.renames and merge.renames to false. In fact, they optimize the work involved in that demotion by not even checking the value. I think demoting "copy" to "true" in the recursive merge machinery is no more surprising than that is. You can find more details to this argument in the portion of my email that you responded to but snipped out. But to add to that argument, if auto-demotion is a violation of the Law of Least Surprise, as you claim, then naming this option merge.renames is also a violation of the Law of Least Surprise. You would instead need to rename it to something like merge.recursive.renames. (And then when a new merge strategy comes along that also does renames, we'll need to add a merge.ort.renames.) > It is fine, of course, to admit at this stage that the whole magic idea of > letting merge.renames inherit from diff.renames was only half thought > through (we're in reviewing stage right now for the purpose of weighing > alternative approaches and trying to come up with the best solution after > all) and that we should go with Ben's original approach, which has the > rather huge and dramatic advantage of being very, very clear and easy to > understand to the user. We could even document that (and why) the 'copy' > value in merge.renames is not allowed for the time being. It was only half thought through, yes, at least by me. But the more I think through it, the more I like the inheritance personally. I see no problem with the demotion and think the inheritance has the advantage of being easier to understand, because I see your proposal as causing questions like: - "Why does merge.renameLimit inherit from diff.renameLimit but merge.renames doesn't from diff.renames?" - "Why can't I just specify in one place that I {am, am not} willing to pay for {full, both copy and} rename detection wherever it makes sense?" - "How do I control the detection for the diffstat at the end of the merge?" Hope that helps, Elijah
next prev parent reply other threads:[~2018-04-27 14:33 UTC|newest] Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-04-20 13:36 [PATCH v1 0/2] add additional config settings for merge Ben Peart 2018-04-20 13:36 ` [PATCH v1 1/2] merge: Add merge.renames config setting Ben Peart 2018-04-20 17:02 ` Elijah Newren 2018-04-20 17:26 ` Elijah Newren 2018-04-23 12:57 ` Ben Peart 2018-04-20 17:59 ` Ben Peart 2018-04-20 18:34 ` Elijah Newren 2018-04-21 4:23 ` Junio C Hamano 2018-04-23 16:00 ` Ben Peart 2018-04-23 23:23 ` Junio C Hamano 2018-04-24 11:58 ` Johannes Schindelin 2018-04-24 17:47 ` Elijah Newren 2018-04-25 8:20 ` Johannes Schindelin 2018-04-22 12:07 ` Eckhard Maaß 2018-04-23 13:15 ` Ben Peart 2018-04-23 21:32 ` Eckhard Maaß 2018-04-24 16:53 ` Ben Peart 2018-04-23 13:22 ` Ben Peart 2018-04-20 13:36 ` [PATCH v1 2/2] merge: Add merge.aggressive " Ben Peart 2018-04-20 17:22 ` Elijah Newren 2018-04-24 16:45 ` Ben Peart 2018-04-24 17:36 ` Elijah Newren 2018-04-24 23:57 ` Junio C Hamano 2018-04-25 14:47 ` Ben Peart 2018-04-20 17:34 ` [PATCH v1 0/2] add additional config settings for merge Elijah Newren 2018-04-20 18:19 ` Ben Peart 2018-04-24 17:11 ` [PATCH v2 " Ben Peart 2018-04-24 17:11 ` [PATCH v2 1/2] merge: Add merge.renames config setting Ben Peart 2018-04-24 18:11 ` Elijah Newren 2018-04-24 18:59 ` Elijah Newren 2018-04-24 20:31 ` Ben Peart 2018-04-25 16:01 ` Elijah Newren 2018-04-24 17:11 ` [PATCH v2 2/2] merge: Add merge.aggressive " Ben Peart 2018-04-25 0:13 ` [PATCH v2 0/2] add additional config settings for merge Junio C Hamano 2018-04-25 15:22 ` Ben Peart 2018-04-26 1:48 ` Junio C Hamano 2018-04-26 20:52 ` [PATCH v3 0/3] add merge.renames config setting Ben Peart 2018-04-26 20:52 ` [PATCH v3 1/3] merge: update documentation for {merge,diff}.renameLimit Ben Peart 2018-04-26 23:11 ` Elijah Newren 2018-04-26 23:23 ` Jonathan Tan 2018-04-26 20:52 ` [PATCH v3 2/3] merge: Add merge.renames config setting Ben Peart 2018-04-26 22:52 ` Elijah Newren 2018-04-27 0:54 ` Ben Peart 2018-04-27 2:23 ` Junio C Hamano 2018-04-27 3:28 ` Elijah Newren 2018-04-27 7:23 ` Johannes Schindelin 2018-04-27 14:32 ` Elijah Newren [this message] 2018-04-27 18:37 ` Eckhard Maaß 2018-04-27 20:23 ` Elijah Newren 2018-04-30 8:03 ` Eckhard Maaß 2018-04-30 16:54 ` Elijah Newren 2018-04-27 4:17 ` Elijah Newren 2018-04-27 18:19 ` Elijah Newren 2018-04-30 13:11 ` Ben Peart 2018-04-30 16:12 ` Re: Elijah Newren 2018-05-02 14:33 ` Re: Ben Peart 2018-04-26 20:52 ` [PATCH v3 3/3] merge: pass aggressive when rename detection is turned off Ben Peart 2018-04-26 23:00 ` Elijah Newren 2018-04-26 22:08 ` [PATCH v3 0/3] add merge.renames config setting Elijah Newren 2018-05-02 16:01 ` [PATCH v4 0/3] add additional config settings for merge Ben Peart 2018-05-02 16:01 ` [PATCH v4 1/3] merge: update documentation for {merge,diff}.renameLimit Ben Peart 2018-05-02 16:01 ` [PATCH v4 2/3] merge: Add merge.renames config setting Ben Peart 2018-05-04 3:07 ` Junio C Hamano 2018-05-02 16:01 ` [PATCH v4 3/3] merge: pass aggressive when rename detection is turned off Ben Peart 2018-05-02 17:20 ` [PATCH v4 0/3] add additional config settings for merge Elijah Newren
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=CABPp-BEoY3bLQVNzfcxKqfXktdpfq0m7yaExM0f3-Ad+Mi0GBQ@mail.gmail.com \ --to=newren@gmail.com \ --cc=Ben.Peart@microsoft.com \ --cc=Johannes.Schindelin@gmx.de \ --cc=eckhard.s.maass@googlemail.com \ --cc=git@vger.kernel.org \ --cc=gitster@pobox.com \ --cc=kewillf@microsoft.com \ --cc=pclouds@gmail.com \ --cc=peartben@gmail.com \ --cc=peff@peff.net \ --cc=vmiklos@frugalware.org \ --subject='Re: [PATCH v3 2/3] merge: Add merge.renames config setting' \ /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
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).