Re: [PATCH v6 00/15] rebase -i: offer to recreate commit topology
- From
Jacob Keller <jacob.keller@gmail.com>
- Date
- Apr 20, 2018, 20:39 UTC
- Message-ID
- <CA+P7+xpA-1L83fGkUr+bnG7b9P3z+huOuSJO=eG5Em+Cpb759w@mail.gmail.com>
- In-Reply-To
- <nycvar.QRO.7.76.6.1804201017450.4241@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz>
On Fri, Apr 20, 2018 at 1:26 AM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
Show 74 quoted lines
> Hi Jake, > > On Thu, 19 Apr 2018, Jacob Keller wrote: > >> On Wed, Apr 18, 2018 at 9:24 PM, Sergey Organov <sorganov@gmail.com> wrote: >> > Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: >> > >> >> On Fri, 13 Apr 2018, Phillip Wood wrote: >> >> >> >>> On 12/04/18 23:02, Johannes Schindelin wrote: >> >>> > >> >>> > [...] >> >>> > >> >>> > So: the order of the 3-way merges does matter. >> >>> > >> >>> > [...] >> >>> >> >>> Those conflicts certainly look intimidating (and the ones in your later >> >>> reply with the N way merge example still look quite complicated). One >> >>> option would be just to stop and have the user resolve the conflicts >> >>> after each conflicting 3-way merge rather than at the end of all the >> >>> merges. There are some downsides: there would need to be a way to >> >>> explain to the user that this is an intermediate step (and what that >> >>> step was); the code would have to do some book keeping to know where it >> >>> had got to; and it would stop and prompt the user to resolve conflicts >> >>> more often which could be annoying but hopefully they'd be clearer to >> >>> resolve because they weren't nested. >> >> >> >> I thought about that. But as I pointed out: the order of the merges *does* >> >> matter. Otherwise we force the user to resolve conflicts that they >> >> *already* resolved during this rebase... >> > >> > How it's relevant to what Phillip suggested? How the order of taking 2 >> > steps, A and B, affects an ability to stop after the first step? It's >> > still either "A,stop,B" or "B,stop,A", depending on the chosen order. >> > >> > What's the _actual_ problem here, if any? >> > >> > -- Sergey >> >> I believe the order of the merges changes which ones cause conflicts, > > That is a correct interpretation of the example I showed. > >> but it's possible to generate pre-images (i.e. a set of parents to >> merge) which cause conflicts regardless of which ordering we pick, so >> I'm not sure there is a "best ordering". > > In general, there is no best ordering, you are right. There is no silver > bullet. > > I am not satisfied with stating that and then leaving it at that. > > In the example I presented, you can see that there are common cases where > there *is* a best ordering. In the wrong order, even if you would force > the user to resolve the merge conflict in an intermediate merge (which > would introduce a nightmare for the user interface, I am sure you see > that), then the next merge would *again* show merge conflicts. > > And I, for one, am *really* certain what my decision would be when offered > the two options 1) force the user to resolve merge conflicts *twice*, or > 2) reorder the intermediate merges and present the user with exactly one > set of merge conflicts. > > So it is irrelevant that there might not be a "best order" in the general > case, when in the common cases quite frequently there is. > > It is just another example where theory disagrees with practice. Don't get > me wrong: it is good to start with theory. And likewise it is simply > necessary to continue from there, and put your theory to the test. And > then you need to turn this into something practical. > > Ciao, > Dscho
I recall you suggested an approach of "try one way, if there are conflicts, check the other way and see if it had conflicts".
And I also agree that forcing the user to resolve conflicts in the middle of the operation is a huge nightmare of a user interface, probably worse than the issues with nested merge conflicts.
Thanks, Jake