All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: david@lang.hm
Cc: Johannes Schindelin <Johannes.Schindelin@gmx.de>,
	saurabh gupta <saurabhgupta1403@gmail.com>,
	git@vger.kernel.org
Subject: Re: Google Summer of Code 2009: GIT
Date: Wed, 11 Mar 2009 14:47:57 -0700	[thread overview]
Message-ID: <7veix33f5e.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <alpine.DEB.1.10.0903111401520.16753@asgard.lang.hm> (david@lang.hm's message of "Wed, 11 Mar 2009 14:05:56 -0700 (PDT)")

david@lang.hm writes:

>>> there are two types of helpers that can be written
>>>
>>> 1. a low-level part that does the simple merges automaticaly and leaves
>>>    behind appropriate conflict markers when it can't
>>>
>>> 2. after a conflict has taken place, a helper to work with the user to
>>>    resolve the conflict
> ...
> secondly, I somewhat disagree with you. #1 is needed for any new
> formats that are goning to be handled, but #2 may not be.
>
> take the case of OO documents, you may not need to write a conflict
> resolver helper. the 'appropriate conflict markers' may be something
> that shows up in your normal OO document editor similar to how the
> ====> shows up in a text editor for text conflicts

You can cut it both ways.  For an OO document, you do not necessarily need
any file-level merger at the driver level, but just let the "binary"
driver declare conflicts and punt.  A merge helper can do all the work
starting from the "original, ours and theirs" that are not smudged with
conflict markers.

Between these two extremes, the discussion from other people in the thread
seemed to all focus too heavily on the "driver punts" approach, forgetting
that mergetool is useful only because most of the time we do not have to
even use it, thanks to the fact that "xdl" driver works reasonably well
for most trivial cases where branches being merged stayed away from each
other, which is the majority case.  It is a huge win from the productivity
point of view, and many people might be unaware of it because it is so
invisible.

Handling trivial cases safely and automatically at the driver level, if
you can figure out how, lets the user focus on hard cases that needs
manual intervention, and "merge helper" is about helping that manual
intervention step.

Being aware of these two distinct layers allows you to realize that there
is a third possibility.  The driver could notice the cases it can resolve
cleanly and return a cleanly merged result.  When it cannot autoresolve,
but there is no way to "mark" a tentative result with conflict markers, it
can do the same thing as the "binary" driver and let the mergetool backend
handle the "driver punted" case.

  reply	other threads:[~2009-03-11 21:49 UTC|newest]

Thread overview: 76+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-11  4:52 Google Summer of Code 2009: GIT Saurabh Gupta
2009-03-11  5:56 ` Daniel Barkalow
     [not found]   ` <ab9fa62a0903102317l3a7322f7w5e4d9ba0e02af37b@mail.gmail.com>
2009-03-11  9:04     ` saurabh gupta
2009-03-11  8:59 ` David Symonds
2009-03-11  9:02   ` saurabh gupta
2009-03-11 11:55   ` Johannes Schindelin
2009-03-11 11:55     ` David Symonds
2009-03-11 12:52       ` Johannes Schindelin
2009-03-11 11:58 ` Johannes Schindelin
2009-03-11 12:11   ` saurabh gupta
2009-03-11 12:58     ` Johannes Schindelin
2009-03-11 13:55       ` saurabh gupta
2009-03-11 14:02         ` Johannes Schindelin
2009-03-11 14:13           ` saurabh gupta
2009-03-11 15:27             ` Rogan Dawes
2009-03-11 16:21               ` saurabh gupta
2009-03-11 15:38             ` Johannes Schindelin
2009-03-11 16:29               ` saurabh gupta
2009-03-11 16:29             ` Daniel Barkalow
2009-03-11 16:44               ` Johannes Schindelin
2009-03-12 12:56                 ` Michael J Gruber
2009-03-12 13:07                   ` Johannes Schindelin
2009-03-12 13:15                     ` Michael J Gruber
2009-03-12 18:25                       ` david
2009-03-11 16:58               ` saurabh gupta
2009-03-12 12:47                 ` Michael J Gruber
2009-03-11 16:32           ` david
2009-03-11 17:01             ` Johannes Schindelin
2009-03-11 19:30               ` david
2009-03-11 19:55                 ` Johannes Schindelin
2009-03-11 17:07             ` saurabh gupta
2009-03-11 19:29               ` david
2009-03-11 20:02                 ` saurabh gupta
2009-03-11 20:21                   ` david
2009-03-11 20:37                     ` Johannes Schindelin
2009-03-11 21:05                       ` david
2009-03-11 21:47                         ` Junio C Hamano [this message]
2009-03-12  1:57                           ` thestar
2009-03-12  7:40                             ` Junio C Hamano
2009-03-12 12:45                           ` saurabh gupta
2009-03-12 18:00                             ` david
2009-03-12 18:43                               ` Junio C Hamano
     [not found]                               ` <ab9fa62a0903121119j6c2a1d43kd9cda99db47b5e7c@mail.gmail.com>
2009-03-12 18:53                                 ` david
2009-03-12 19:00                                   ` saurabh gupta
2009-03-12 19:29                                     ` david
2009-03-12 19:45                                       ` saurabh gupta
2009-03-12 19:59                                         ` david
2009-03-12 20:03                                           ` saurabh gupta
2009-03-12 20:45                                             ` david
2009-03-13  3:15                                               ` saurabh gupta
2009-03-18 23:16                                             ` Johannes Schindelin
2009-03-18 23:55                                               ` david
2009-03-19  0:43                                                 ` Johannes Schindelin
2009-03-19  8:37                                                   ` david
2009-03-19 10:24                                                     ` Johannes Schindelin
2009-03-19 19:12                                                       ` david
2009-03-19 19:23                                                   ` saurabh gupta
2009-03-19  6:30                                               ` Caleb Cushing
2009-03-19 10:19                                                 ` Johannes Schindelin
2009-03-21 23:53                                                   ` Caleb Cushing
2009-03-19 19:17                                               ` saurabh gupta
2009-03-19 23:42                                                 ` Johannes Schindelin
2009-03-20  0:07                                                   ` david
2009-03-20  0:30                                                     ` Johannes Schindelin
2009-03-20  3:09                                                       ` david
2009-03-20  9:35                                                         ` Johannes Schindelin
2009-03-20 20:50                                                           ` david
2009-03-21 17:38                                                             ` saurabh gupta
     [not found]                                                   ` <ab9fa62a0903211031l78c7afadg9409a544f2bda7db@mail.gmail.com>
2009-03-21 17:36                                                     ` saurabh gupta
2009-03-12 20:18                                       ` Junio C Hamano
2009-03-12 12:42                     ` saurabh gupta
2009-03-12 18:03                       ` david
2009-03-12 18:23                         ` saurabh gupta
2009-03-13  9:41                           ` Rogan Dawes
2009-03-13 20:18                             ` saurabh gupta
2009-03-11 19:36 ` 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=7veix33f5e.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=Johannes.Schindelin@gmx.de \
    --cc=david@lang.hm \
    --cc=git@vger.kernel.org \
    --cc=saurabhgupta1403@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.