From: Jonathan Nieder <jrnieder@gmail.com>
To: Johan Herland <johan@herland.net>
Cc: git@vger.kernel.org, bebarino@gmail.com, avarab@gmail.com,
gitster@pobox.com, srabbelier@gmail.com,
Thomas Rast <trast@student.ethz.ch>
Subject: Re: [PATCHv5 23/23] Provide 'git merge --abort' as a synonym to 'git reset --merge'
Date: Sun, 24 Oct 2010 20:32:18 -0500 [thread overview]
Message-ID: <20101025013217.GA25355@burratino> (raw)
In-Reply-To: <1287965333-5099-24-git-send-email-johan@herland.net>
Johan Herland wrote:
> --- a/Documentation/git-merge.txt
> +++ b/Documentation/git-merge.txt
> @@ -13,6 +13,7 @@ SYNOPSIS
> However, if there
> +were uncommitted changes when the merge started (and these changes
> +did not interfere with the merge itself, otherwise the merge would
> +have refused to start), and then additional modifications were made
> +to these uncommitted changes, 'git merge --abort' will not be able
> +reconstruct the original (pre-merge) uncommitted changes. Therefore:
I do not find this clear. Could you give an example?
References:
http://thread.gmane.org/gmane.comp.version-control.git/136356/focus=136773
http://thread.gmane.org/gmane.comp.version-control.git/151799/focus=151812
> +--abort::
> + Abort the current conflict resolution process, and
> + reconstruct the pre-merge state.
> ++
> +Any uncommitted worktree changes present when the merge started,
> +will only be preserved if they have not been further modified
> +since the merge started.
Ah, maybe I see: is the problem this procedure?
1. Make changes to file foo.c (without staging them).
2. Try a merge (which cannot touch foo.c, or the merge would have
been aborted automatically) which fails with conflicts.
3. As a result of semantic conflicts, make some changes to foo.c.
4. Wish to return to the state from the end of step 1.
But I find the following more likely:
1. Make changes to file foo.c (without staging them).
2. Try a merge (which cannot touch foo.c, or the merge would have
been aborted automatically) which fails with conflicts.
3. Walk away in disgust.
4. Return, make some more changes to foo.c.
5. Notice the merge in progress --- oh! --- and abort it.
> --- a/t/t7609-merge-abort.sh
> +++ b/t/t7609-merge-abort.sh
> @@ -3,95 +3,271 @@
> test_description='test aborting in-progress merges'
> . ./test-lib.sh
>
> +# Set up repo with conflicting and non-conflicting branches:
> +#
> +# master1---master2---foo_foo <-- master
> +# \
> +# --clean1 <-- clean_branch
> +# \
> +# --foo_bar <-- conflict_branch
[It might be nice to include this in test_description for use by
"./t7609-merge-abort.sh --help".]
> +# - dirty worktree before merge matches contents on remote branch
Or maybe this was the example. Here was Junio's explanation of it:
| It will discard the change, the one you independently picked up, but the
| change agreed with what was done by the the trash history that you are
| cancelling merge with. You wouldn't miss losing the same change as in
| that trash history.
In other words, if the change is also on a remote branch that you want
not to merge with anyway, it is not likely to be terribly important to
preserve it in the local tree. (This is a trade-off between
convenience in two different scenarios.)
Hope that helps (sorry for the ramble).
next prev parent reply other threads:[~2010-10-25 1:36 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-25 0:08 [PATCHv5 00/23] git notes merge Johan Herland
2010-10-25 0:08 ` [PATCHv5 01/23] notes.c: Hexify SHA1 in die() message from init_notes() Johan Herland
2010-10-25 0:08 ` [PATCHv5 02/23] (trivial) notes.h: Minor documentation fixes to copy_notes() Johan Herland
2010-10-25 0:08 ` [PATCHv5 03/23] notes.h: Make default_notes_ref() available in notes API Johan Herland
2010-10-25 0:08 ` [PATCHv5 04/23] notes.c: Reorder functions in preparation for next commit Johan Herland
2010-10-25 0:08 ` [PATCHv5 05/23] notes.h/c: Allow combine_notes functions to remove notes Johan Herland
2010-10-25 0:08 ` [PATCHv5 06/23] notes.h/c: Propagate combine_notes_fn return value to add_note() and beyond Johan Herland
2010-10-25 0:08 ` [PATCHv5 07/23] (trivial) t3303: Indent with tabs instead of spaces for consistency Johan Herland
2010-10-25 0:08 ` [PATCHv5 08/23] notes.c: Use two newlines (instead of one) when concatenating notes Johan Herland
2010-10-25 0:08 ` [PATCHv5 09/23] builtin/notes.c: Split notes ref DWIMmery into a separate function Johan Herland
2010-10-25 0:08 ` [PATCHv5 10/23] git notes merge: Initial implementation handling trivial merges only Johan Herland
2010-10-25 0:08 ` [PATCHv5 11/23] builtin/notes.c: Refactor creation of notes commits Johan Herland
2010-10-25 0:08 ` [PATCHv5 12/23] git notes merge: Handle real, non-conflicting notes merges Johan Herland
2010-10-25 0:08 ` [PATCHv5 13/23] git notes merge: Add automatic conflict resolvers (ours, theirs, union) Johan Herland
2010-10-25 0:08 ` [PATCHv5 14/23] Documentation: Preliminary docs on 'git notes merge' Johan Herland
2010-10-25 0:08 ` [PATCHv5 15/23] git notes merge: Manual conflict resolution, part 1/2 Johan Herland
2010-10-25 0:08 ` [PATCHv5 16/23] git notes merge: Manual conflict resolution, part 2/2 Johan Herland
2010-10-25 0:08 ` [PATCHv5 17/23] git notes merge: List conflicting notes in notes merge commit message Johan Herland
2010-10-25 0:08 ` [PATCHv5 18/23] git notes merge: --commit should fail if underlying notes ref has moved Johan Herland
2010-10-25 0:08 ` [PATCHv5 19/23] git notes merge: Add another auto-resolving strategy: "cat_sort_uniq" Johan Herland
2010-10-25 0:08 ` [PATCHv5 20/23] git notes merge: Add testcases for merging notes trees at different fanouts Johan Herland
2010-10-29 15:01 ` Junio C Hamano
2010-11-01 0:09 ` Johan Herland
2010-10-25 0:08 ` [PATCHv5 21/23] Provide 'git notes get-ref' to easily retrieve current notes ref Johan Herland
2010-10-25 0:08 ` [PATCHv5 22/23] cmd_merge(): Parse options before checking MERGE_HEAD Johan Herland
2010-10-25 0:08 ` [PATCHv5 23/23] Provide 'git merge --abort' as a synonym to 'git reset --merge' Johan Herland
2010-10-25 1:32 ` Jonathan Nieder [this message]
2010-10-25 10:02 ` Johan Herland
2010-10-26 1:26 ` Johan Herland
2010-10-26 1:30 ` [PATCHv5.1 22/23] cmd_merge(): Parse options before checking MERGE_HEAD Johan Herland
2010-10-26 1:34 ` [PATCHv5.1 23/23] Provide 'git merge --abort' as a synonym to 'git reset --merge' Johan Herland
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=20101025013217.GA25355@burratino \
--to=jrnieder@gmail.com \
--cc=avarab@gmail.com \
--cc=bebarino@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=johan@herland.net \
--cc=srabbelier@gmail.com \
--cc=trast@student.ethz.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 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).