threads / rfc / 43534

patchRe: [RFC/PATCH] git-reset to remove "$GIT_DIR/MERGE_MSG"

Subject: Re: [RFC/PATCH] git-reset to remove "$GIT_DIR/MERGE_MSG"

## tl;dr

5 messages between Dec 5, 2006 and Dec 5, 2006. Diffs are folded; open one to read it.

replies: 4people: 4as markdown or json

Junio C Hamano· Dec 5, 2006, 03:44 UTC · lore

[RFC/PATCH] git-reset to remove "$GIT_DIR/MERGE_MSG"

An earlier commit a9cb3c6e changed git-commit to use the contents of MERGE_MSG even when we do not have MERGE_HEAD (the rationale is in its log message).

However, the change tricks the following sequence to include a merge message in a completely unrelated commit:

	$ git pull somewhere
	: oops, the conflicts are too much.  forget it.
        $ git reset --hard
        : work work work
        $ git commit

To fix this confusion, this patch makes "git reset" to remove the leftover MERGE_MSG that was prepared when the user abandoned the merge.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
 * Marked as RFC because I suspect I am missing a valid use case
   where a user might want to say "reset" as part of continuing
   the conflicted merge resolution, although I do not think of
   any offhand...
 git-reset.sh |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)
Show changes to git-reset.sh +2 −1
diff --git a/git-reset.sh b/git-reset.sh
index 3133b5b..c0feb44 100755
--- a/git-reset.sh
+++ b/git-reset.sh
@@ -63,6 +63,7 @@ case "$reset_type" in
 	;;
 esac
 
-rm -f "$GIT_DIR/MERGE_HEAD" "$GIT_DIR/rr-cache/MERGE_RR" "$GIT_DIR/SQUASH_MSG"
+rm -f "$GIT_DIR/MERGE_HEAD" "$GIT_DIR/rr-cache/MERGE_RR" \
+	"$GIT_DIR/SQUASH_MSG" "$GIT_DIR/MERGE_MSG"
 
 exit $update_ref_status
Luben Tuikov· Dec 5, 2006, 06:19 UTC · re: Junio C Hamano · lore
--- Junio C Hamano <junkio@cox.net> wrote:
Show 18 quoted lines
> An earlier commit a9cb3c6e changed git-commit to use the
> contents of MERGE_MSG even when we do not have MERGE_HEAD (the
> rationale is in its log message).
> 
> However, the change tricks the following sequence to include a
> merge message in a completely unrelated commit:
> 
> 	$ git pull somewhere
> 	: oops, the conflicts are too much.  forget it.
>         $ git reset --hard
>         : work work work
>         $ git commit
> 
> To fix this confusion, this patch makes "git reset" to remove
> the leftover MERGE_MSG that was prepared when the user abandoned
> the merge.
> 
> Signed-off-by: Junio C Hamano <junkio@cox.net>
Acked-by: Luben Tuikov <ltuikov@yahoo.com
Show 7 quoted lines
> 
> ---
> 
>  * Marked as RFC because I suspect I am missing a valid use case
>    where a user might want to say "reset" as part of continuing
>    the conflicted merge resolution, although I do not think of
>    any offhand...
I also cannot think of any offhand.  Should be safe to commit.
     Luben
Show 20 quoted lines
> 
>  git-reset.sh |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/git-reset.sh b/git-reset.sh
> index 3133b5b..c0feb44 100755
> --- a/git-reset.sh
> +++ b/git-reset.sh
> @@ -63,6 +63,7 @@ case "$reset_type" in
>  	;;
>  esac
>  
> -rm -f "$GIT_DIR/MERGE_HEAD" "$GIT_DIR/rr-cache/MERGE_RR" "$GIT_DIR/SQUASH_MSG"
> +rm -f "$GIT_DIR/MERGE_HEAD" "$GIT_DIR/rr-cache/MERGE_RR" \
> +	"$GIT_DIR/SQUASH_MSG" "$GIT_DIR/MERGE_MSG"
>  
>  exit $update_ref_status
> 
> 
> 
Johannes Schindelin· Dec 5, 2006, 08:22 UTC · re: Junio C Hamano · lore
Hi,
On Mon, 4 Dec 2006, Junio C Hamano wrote:
>  * Marked as RFC because I suspect I am missing a valid use case
>    where a user might want to say "reset" as part of continuing
>    the conflicted merge resolution, although I do not think of
>    any offhand...

I can only speak for myself, of course: When I use git-reset in a merge, more often than not I use "--hard", in which case I want to try something different. So yes, I like this patch.

The only possible exception I can think of: git-reset --mixed when a merge failed.

Ciao, Dscho

Andreas Ericsson· Dec 5, 2006, 08:36 UTC · re: Johannes Schindelin · lore
Johannes Schindelin wrote:
Show 16 quoted lines
> Hi,
> 
> On Mon, 4 Dec 2006, Junio C Hamano wrote:
> 
>>  * Marked as RFC because I suspect I am missing a valid use case
>>    where a user might want to say "reset" as part of continuing
>>    the conflicted merge resolution, although I do not think of
>>    any offhand...
> 
> I can only speak for myself, of course: When I use git-reset in a merge, 
> more often than not I use "--hard", in which case I want to try something 
> different. So yes, I like this patch.
> 
> The only possible exception I can think of: git-reset --mixed when a 
> merge failed.
> 

Indeed, but any invocation of git-reset means you'll quite likely have to re-do the merge to get all changes anyways.

Like most others, I also use the --hard option most of the times when I have merge-errors (usually because I've forgotten to create a topic-branch to do my work in, so I create one from 'master', reset master to whatever it was last time I pulled and then try rebase'ing on to it).

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Johannes Schindelin· Dec 5, 2006, 09:03 UTC · re: Andreas Ericsson · lore
Hi,
On Tue, 5 Dec 2006, Andreas Ericsson wrote:
Show 7 quoted lines
> Johannes Schindelin wrote:
> > 
> > The only possible exception I can think of: git-reset --mixed when a merge
> > failed.
> 
> Indeed, but any invocation of git-reset means you'll quite likely have 
> to re-do the merge to get all changes anyways.

But the working directory still contains the changes (and conflicts) with --mixed. A valid workflow would then be to compare to the index directly, instead of having to ask "git diff --ours" all the time. And if I'm not mistaken, a commit (after cleaning up the conflicts) would not record the merge as a merge.

Ciao, Dscho

← back to recent threads