git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [BUG] git rebase is confuse if conflict resolution doesn't produce diff
@ 2008-08-15 17:00 Guillaume Desmottes
  2008-08-15 18:24 ` Stephan Beyer
  2008-08-15 18:41 ` Junio C Hamano
  0 siblings, 2 replies; 4+ messages in thread
From: Guillaume Desmottes @ 2008-08-15 17:00 UTC (permalink / raw)
  To: git

To reproduce:
- Rebase a branch "foo" on a branch "bar" in a way that there is a
conflict that you have to manually resolve.
- Run git diff and see the conflict
- Edit the conflicted file and remove all the conflicting bits (that
could be a valid resolution of the conflict)
- Now git diff produces an empty diff
- git add $CONFLICTED_FILE  as you have resolve the conflict
- git rebase --continue

You get the following error:
No changes - did you forget to use 'git add'?

git status is empty as the conflict was resolved.

A simple workaround is to add a dummy blank line in the conflicted file
so the diff is not empty.


	G.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [BUG] git rebase is confuse if conflict resolution doesn't produce diff
  2008-08-15 17:00 [BUG] git rebase is confuse if conflict resolution doesn't produce diff Guillaume Desmottes
@ 2008-08-15 18:24 ` Stephan Beyer
  2008-08-18  9:10   ` Guillaume Desmottes
  2008-08-15 18:41 ` Junio C Hamano
  1 sibling, 1 reply; 4+ messages in thread
From: Stephan Beyer @ 2008-08-15 18:24 UTC (permalink / raw)
  To: Guillaume Desmottes; +Cc: git

Hi,

Guillaume Desmottes wrote:
> To reproduce:
> - Rebase a branch "foo" on a branch "bar" in a way that there is a
> conflict that you have to manually resolve.
> - Run git diff and see the conflict
> - Edit the conflicted file and remove all the conflicting bits (that
> could be a valid resolution of the conflict)
> - Now git diff produces an empty diff
> - git add $CONFLICTED_FILE  as you have resolve the conflict
> - git rebase --continue
> 
> You get the following error:
> No changes - did you forget to use 'git add'?
> 
> git status is empty as the conflict was resolved.
> 
> A simple workaround is to add a dummy blank line in the conflicted file
> so the diff is not empty.

I think this is no bug, since you would generate an empty commit, i.e
a commit with no changes at all. Usually you do not want such commits.
So git rebase --skip is perhaps what you want.

Regards,
  Stephan

-- 
Stephan Beyer <s-beyer@gmx.net>, PGP 0x6EDDD207FCC5040F

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [BUG] git rebase is confuse if conflict resolution doesn't produce diff
  2008-08-15 17:00 [BUG] git rebase is confuse if conflict resolution doesn't produce diff Guillaume Desmottes
  2008-08-15 18:24 ` Stephan Beyer
@ 2008-08-15 18:41 ` Junio C Hamano
  1 sibling, 0 replies; 4+ messages in thread
From: Junio C Hamano @ 2008-08-15 18:41 UTC (permalink / raw)
  To: Guillaume Desmottes; +Cc: git

Guillaume Desmottes <guillaume.desmottes@collabora.co.uk> writes:

> To reproduce:
> - Rebase a branch "foo" on a branch "bar" in a way that there is a
> conflict that you have to manually resolve.
> - Run git diff and see the conflict
> - Edit the conflicted file and remove all the conflicting bits (that
> could be a valid resolution of the conflict)
> - Now git diff produces an empty diff
> - git add $CONFLICTED_FILE  as you have resolve the conflict
> - git rebase --continue

I think you would need a bit more than that to trigger this "behaviour".
Your resolution needs to be such that it is identical to the HEAD where
the rebased change is applied to, iow, among the series of commits, the
final effect chosen by you from this particular one is not to do
anything.  So, not just "Now git diff produces an empty diff" in the above
sequence, which merely means that the three-way --cc diff between the
conflicted parties are resolved by taking from one side, after that "git
add", "git diff HEAD" will have to be empty, for you to see the message.

In essence, the final effect chosen by you is to skip this commit.  You
might want to say "git rebase --skip" here if that is the case.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [BUG] git rebase is confuse if conflict resolution doesn't  produce diff
  2008-08-15 18:24 ` Stephan Beyer
@ 2008-08-18  9:10   ` Guillaume Desmottes
  0 siblings, 0 replies; 4+ messages in thread
From: Guillaume Desmottes @ 2008-08-18  9:10 UTC (permalink / raw)
  To: Stephan Beyer; +Cc: git

Le vendredi 15 août 2008 à 20:24 +0200, Stephan Beyer a écrit :
> Hi,
> 
> Guillaume Desmottes wrote:
> > To reproduce:
> > - Rebase a branch "foo" on a branch "bar" in a way that there is a
> > conflict that you have to manually resolve.
> > - Run git diff and see the conflict
> > - Edit the conflicted file and remove all the conflicting bits (that
> > could be a valid resolution of the conflict)
> > - Now git diff produces an empty diff
> > - git add $CONFLICTED_FILE  as you have resolve the conflict
> > - git rebase --continue
> > 
> > You get the following error:
> > No changes - did you forget to use 'git add'?
> > 
> > git status is empty as the conflict was resolved.
> > 
> > A simple workaround is to add a dummy blank line in the conflicted file
> > so the diff is not empty.
> 
> I think this is no bug, since you would generate an empty commit, i.e
> a commit with no changes at all. Usually you do not want such commits.
> So git rebase --skip is perhaps what you want.

Yeah, I know, that's what I did when I finally understood the problem.
But that took me more than 20 minutes before understanding what I did
wrong (I just manually resolved the conflict and wasn't aware that what
I actually wanted was to remove the commit).

Maybe in that case git rebase should suggest something like that "Seems
you want to skip this commit. Do you want to --skip it ?".


	G.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2008-08-18  9:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-08-15 17:00 [BUG] git rebase is confuse if conflict resolution doesn't produce diff Guillaume Desmottes
2008-08-15 18:24 ` Stephan Beyer
2008-08-18  9:10   ` Guillaume Desmottes
2008-08-15 18:41 ` Junio C Hamano

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).