From: Stephen Leake <stephen_leake@stephe-leake.org>
To: git@vger.kernel.org
Subject: Re: [RFC 0/3] Make git more user-friendly during a merge conflict
Date: Sat, 01 Mar 2014 04:32:29 -0600 [thread overview]
Message-ID: <85vbvyxl8i.fsf@stephe-leake.org> (raw)
In-Reply-To: <87eh2n16sw.fsf@fencepost.gnu.org> (David Kastrup's message of "Fri, 28 Feb 2014 18:33:03 +0100")
David Kastrup <dak@gnu.org> writes:
> Stephen Leake <stephen_leake@stephe-leake.org> writes:
>
>> David Kastrup <dak@gnu.org> writes:
>>
>>> Stephen Leake <stephen_leake@stephe-leake.org> writes:
>>>
>>>> David Kastrup <dak@gnu.org> writes:
>>>>
>>>>> "do the right thing" commands also tend to do the wrong thing
>>>>> occasionally with potentially disastrous results when they are used
>>>>> in scripts where the followup actions rely on the actual result.
>>>>
>>>> That is bad, and should not be allowed. On the other hand, I have yet
>>>> to see an actual use case of bad behavior in this discussion.
>>>
>>> Huh.
>>>
>>> <http://permalink.gmane.org/gmane.comp.version-control.git/242744>
>>
>> That's about backward incompatibility, which is bad, but not what I was
>> talking about above.
>
> No, it isn't. I quote:
>
> I sometimes run "git reset" during a merge to only reset the index
> and then examine the changes introduced by the merge. With your
> changes, someone doing so would abort the merge and discard the
> merge resolution. I very rarely do this, but even rarely, I
> wouldn't like Git to start droping data silently for me ;-).
>
> You should not make statements like "I have yet to see an actual use
> case of bad behavior in this discussion" when you actually mean "I have
> not yet seen anything I would be interested in doing myself".
Clearly I misunderstood your point. Merely repeating the same statement
that I misunderstood, and adding a misunderstanding of what I said, is
not helpful.
So let me see if I can expand on your use case:
- you do 'git merge', which results in conflicts
- you edit some workspace files to resolve some of those conflicts
(I added this step later, since it was implied but not explicit)
- you do 'git reset', intending 'git reset --mixed' (because that is the
current default)
Actually, I can't find a precise definition of 'git reset'. Here is
the synopsis from the man page for 'git-reset' (from git 1.7.9):
git reset [-q] [<commit>] [--] <paths>...
git reset (--patch | -p) [<commit>] [--] [<paths>...]
git reset (--soft | --mixed | --hard | --merge | --keep) [-q] [<commit>]
In 'git reset', there is no path, so it must be the second or third
form. But those _require_ one of the -- options. So 'git reset' is
illegal. Clearly something is wrong here; apparently the third line
should be:
git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]
with '--mixed' as the default, as is stated later. (perhaps the
original intent was to not have a default for the third form, but
that got changed sometime?).
This command "resets the index" but not the working tree. I'm not
clear what "reset the index" means here; does it mean "remove all
entries from the index", or "reset the index to some previous
state"? In other man pages, "reset" can have either meaning
depending on context.
- then you "examine changes introduced by the merge". I don't know what
this means in detail.
Before resetting the index, you could diff a workspace file against
either HEAD or index. Now you can only diff against HEAD, so I don't
understand why you wanted to reset the index. That's not relevant to
this use case; I'll just accept that resetting the index is a useful
thing to do here. But I would like to understand why.
- with the "do the right thing" patch, 'git reset' does 'git reset
--merge' instead
That "Resets the index and updates the files in the working tree
that are different between <commit> and HEAD".
"<commit>" in this case defaults to HEAD, so the working tree is
not changed.
So as I understand it, this does _not_ lose your conflict resolutions.
In fact, it now seems that 'git reset --mixed' is always the same as
'git reset --merge'. So I must be missing something!
--
-- Stephe
next prev parent reply other threads:[~2014-03-01 10:32 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-26 18:06 [RFC 0/3] Make git more user-friendly during a merge conflict Andrew Wong
2014-02-26 18:06 ` [RFC 1/3] wt-status: Make conflict hint message more consistent with other hints Andrew Wong
2014-02-26 20:34 ` Jonathan Nieder
2014-02-26 20:37 ` Junio C Hamano
2014-02-26 23:07 ` Andrew Wong
2014-02-26 18:06 ` [RFC 2/3] merge: Add hints to tell users about "git merge --abort" Andrew Wong
2014-02-26 20:38 ` Jonathan Nieder
2014-02-26 23:16 ` Andrew Wong
2014-03-05 15:30 ` Andrew Wong
2014-03-05 18:29 ` Junio C Hamano
2014-03-05 20:51 ` Andrew Wong
2014-03-05 21:20 ` Junio C Hamano
2014-03-05 18:35 ` Matthieu Moy
2014-02-26 18:06 ` [RFC 3/3] reset: Change the default behavior to use "--merge" during a merge Andrew Wong
2014-02-26 18:21 ` Matthieu Moy
2014-02-26 20:15 ` Andrew Wong
2014-02-26 20:48 ` Jonathan Nieder
2014-02-26 23:37 ` Andrew Wong
2014-02-26 20:57 ` Matthieu Moy
2014-02-27 0:00 ` Andrew Wong
2014-02-26 20:53 ` Junio C Hamano
2014-03-11 4:39 ` Andrew Wong
2014-02-26 20:26 ` [RFC 0/3] Make git more user-friendly during a merge conflict Jonathan Nieder
2014-02-28 9:01 ` Stephen Leake
2014-02-28 9:14 ` Charles Bailey
2014-02-28 10:11 ` David Kastrup
2014-02-28 14:13 ` Stephen Leake
2014-02-28 14:21 ` David Kastrup
2014-02-28 17:26 ` Stephen Leake
2014-02-28 17:33 ` David Kastrup
2014-03-01 10:32 ` Stephen Leake [this message]
2014-03-01 11:38 ` Matthieu Moy
2014-03-01 16:50 ` Stephen Leake
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=85vbvyxl8i.fsf@stephe-leake.org \
--to=stephen_leake@stephe-leake.org \
--cc=git@vger.kernel.org \
/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.