git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Odd merge behaviour involving reverts
@ 2008-12-18 23:25 Alan
  2008-12-18 23:58 ` Linus Torvalds
                   ` (2 more replies)
  0 siblings, 3 replies; 17+ messages in thread
From: Alan @ 2008-12-18 23:25 UTC (permalink / raw)
  To: git

I am encountering an odd problem with how merging branches are working.
I expect I am doing something wrong, I just need to know what.

Here is my situation...

I have a master branch.  We have a branch off of that that some
developers are doing work on.  They claim it is ready. We merge it into
the master branch.  It breaks something so we revert the merge.  They
make changes to the code.  they get it to a point where they say it is
ok and we merge again.

When examined, we find that code changes made before the revert are not
in the master branch, but code changes after are in the master branch.

We now have code that does not contain all of the changes in the branch.

Is there a different way to undo merges into a branch that does not
block further merges from that branch?

What am i doing wrong here?

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

* Re: Odd merge behaviour involving reverts
  2008-12-18 23:25 Odd merge behaviour involving reverts Alan
@ 2008-12-18 23:58 ` Linus Torvalds
  2008-12-19  0:11   ` Alan
  2008-12-19  1:30 ` Boyd Stephen Smith Jr.
  2008-12-19  3:44 ` Nanako Shiraishi
  2 siblings, 1 reply; 17+ messages in thread
From: Linus Torvalds @ 2008-12-18 23:58 UTC (permalink / raw)
  To: Alan; +Cc: git



On Thu, 18 Dec 2008, Alan wrote:
> 
> What am i doing wrong here?

Reverting a merge is your problem.

You can do it, but you seem to have done it without understanding what it 
causes.

A revert of a merge becomes a regular commit that just undoes everything 
that the merge did in your branch. When you then do the next merge, you'll 
do that merge with that in mind, so now git will essentially consider the 
previous merge to be the base line, but your revert undid everything that 
that one brought in, so the new merge will really only contain the new 
stuff from the branch you are merging. 

So if a merge causes problems, you generally should either undo it 
_entirely_ (ie do a 'git reset --hard ORIG_HEAD'), not revert it. 

Of course, if you had already made the merged state public, or done 
development on top of it, you can't really do that. In which case a revert 
works, but if you want it back, you should revert the revert, not merge 
the branch again - because what you merged last time you threw away, and 
won't be applied again.

		Linus

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

* Re: Odd merge behaviour involving reverts
  2008-12-18 23:58 ` Linus Torvalds
@ 2008-12-19  0:11   ` Alan
  2008-12-19  0:21     ` Linus Torvalds
  0 siblings, 1 reply; 17+ messages in thread
From: Alan @ 2008-12-19  0:11 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: git

On Thu, 2008-12-18 at 15:58 -0800, Linus Torvalds wrote:
> 
> On Thu, 18 Dec 2008, Alan wrote:
> > 
> > What am i doing wrong here?
> 
> Reverting a merge is your problem.
> 
> You can do it, but you seem to have done it without understanding what it 
> causes.

Obviously.

> A revert of a merge becomes a regular commit that just undoes everything 
> that the merge did in your branch. When you then do the next merge, you'll 
> do that merge with that in mind, so now git will essentially consider the 
> previous merge to be the base line, but your revert undid everything that 
> that one brought in, so the new merge will really only contain the new 
> stuff from the branch you are merging. 

So I will have to look for previous reverts (or "pre-verts") before
merging again.

> So if a merge causes problems, you generally should either undo it 
> _entirely_ (ie do a 'git reset --hard ORIG_HEAD'), not revert it. 
> 
> Of course, if you had already made the merged state public, or done 
> development on top of it, you can't really do that. In which case a revert 
> works, but if you want it back, you should revert the revert, not merge 
> the branch again - because what you merged last time you threw away, and 
> won't be applied again.

On this code base, there were 30+ branches merged before the powers that
be decided to have me pull that one.  It was in the middle of the pile.

I think I know how to fix it.  I am just concerned about having it occur
again if someone else makes the same mistake I did.

Thanks.

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

* Re: Odd merge behaviour involving reverts
  2008-12-19  0:11   ` Alan
@ 2008-12-19  0:21     ` Linus Torvalds
  2008-12-19  0:35       ` Alan
  0 siblings, 1 reply; 17+ messages in thread
From: Linus Torvalds @ 2008-12-19  0:21 UTC (permalink / raw)
  To: Alan; +Cc: git



On Thu, 18 Dec 2008, Alan wrote:
> 
> I think I know how to fix it.  I am just concerned about having it occur
> again if someone else makes the same mistake I did.

I suspect we should warn about reverting merges. I'm surprised we don't 
already. Reverting a merge isn't "wrong", but it's a whole lot more subtle 
than reverting a regular commit.

Reverting a regular commit just effectively undoes what that commit did, 
and is fairly straightforward. But reverting a merge commit also undoes 
the _data_ that the commit changed, but it does absolutely nothing to the 
effects on _history_ that the merge had.

So the merge will still exist, and it will still be seen as joining the 
two branches together, and future merges will see that merge as the last 
shared state - and the revert that reverted the merge brought in will not 
affect that at all.

So a "revert" undoes the data changes, but it's very much _not_ an "undo" 
in the sense that it doesn't undo the effects of a commit on the 
repository history.

So if you think of "revert" as "undo", then you're going to always miss 
this part of reverts. Yes, it undoes the data, but no, it doesn't undo 
history.

			Linus

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

* Re: Odd merge behaviour involving reverts
  2008-12-19  0:21     ` Linus Torvalds
@ 2008-12-19  0:35       ` Alan
  2008-12-19  0:46         ` Linus Torvalds
  0 siblings, 1 reply; 17+ messages in thread
From: Alan @ 2008-12-19  0:35 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: git

On Thu, 2008-12-18 at 16:21 -0800, Linus Torvalds wrote:
> 
> On Thu, 18 Dec 2008, Alan wrote:
> > 
> > I think I know how to fix it.  I am just concerned about having it occur
> > again if someone else makes the same mistake I did.
> 
> I suspect we should warn about reverting merges. I'm surprised we don't 
> already. Reverting a merge isn't "wrong", but it's a whole lot more subtle 
> than reverting a regular commit.
> 
> Reverting a regular commit just effectively undoes what that commit did, 
> and is fairly straightforward. But reverting a merge commit also undoes 
> the _data_ that the commit changed, but it does absolutely nothing to the 
> effects on _history_ that the merge had.
> 
> So the merge will still exist, and it will still be seen as joining the 
> two branches together, and future merges will see that merge as the last 
> shared state - and the revert that reverted the merge brought in will not 
> affect that at all.
> 
> So a "revert" undoes the data changes, but it's very much _not_ an "undo" 
> in the sense that it doesn't undo the effects of a commit on the 
> repository history.
> 
> So if you think of "revert" as "undo", then you're going to always miss 
> this part of reverts. Yes, it undoes the data, but no, it doesn't undo 
> history.

So what is the recommended way to undo mistaken merges caught after the
fact that will not fubar later merges?

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

* Re: Odd merge behaviour involving reverts
  2008-12-19  0:35       ` Alan
@ 2008-12-19  0:46         ` Linus Torvalds
  0 siblings, 0 replies; 17+ messages in thread
From: Linus Torvalds @ 2008-12-19  0:46 UTC (permalink / raw)
  To: Alan; +Cc: git



On Thu, 18 Dec 2008, Alan wrote:
> 
> So what is the recommended way to undo mistaken merges caught after the
> fact that will not fubar later merges?

Oh, I suspect reverting is the right thing, it's just that then you need 
to remember to revert the revert if you intend to merge that branch again 
later.

So reverting a merge isn't _wrong_ per se. It's just that you need to be 
aware of the consequences, and if it becomes a common situation, you have 
a problem in your usage patterns.

Btw, even with non-merge commits, "revert" can have interesting effects 
exactly because it doesn't change history. For example, let's say that you 
had a history like this, with two branches:

	--> a --> b --> c --> d
	      |
	      +-> e --> !a

where the second branch reverts 'a', but the first one does not. What 
happens when you merge the two branches? Is the revert sticky? In this 
case, yes, a merge will cause the revert to stick. But what happens if you 
had

	--> a --> b --> c --> d
	      |
	      +-> e --> f --> !e

and 'b' and 'e' were the same patch (just applied in two different 
branches), and '!e' reverts that patch in the second branch. What happens 
to 'b' when you merge? Would you expect for 'b' to go away, since the 
revert undid the same data in the second branch?

In that second case, the revert of 'e' will basically make git act as if 
'e' didn't happen at all in the second branch, and so when you merge them, 
'b' _will_ exist in the end result, so now the revert didn't "take".

All of this is very self-consistent (it's a very direct result of how 
merges work and how revert works), but I'm just bringing these things up 
as examples of how 'revert' is not a totally trivial matter. You'll always 
find cases where you might have wished that it had acted differently when 
you merge things.



			Linus

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

* Re: Odd merge behaviour involving reverts
  2008-12-18 23:25 Odd merge behaviour involving reverts Alan
  2008-12-18 23:58 ` Linus Torvalds
@ 2008-12-19  1:30 ` Boyd Stephen Smith Jr.
  2008-12-19  3:44 ` Nanako Shiraishi
  2 siblings, 0 replies; 17+ messages in thread
From: Boyd Stephen Smith Jr. @ 2008-12-19  1:30 UTC (permalink / raw)
  To: Alan; +Cc: git

[-- Attachment #1: Type: text/plain, Size: 944 bytes --]

On Thursday 2008 December 18 17:25:34 Alan wrote:
> Here is my situation...
>
> I have a master branch.  We have a branch off of that that some
> developers are doing work on.  They claim it is ready. We merge it into
> the master branch.  It breaks something so we revert the merge.  They
> make changes to the code.  they get it to a point where they say it is
> ok and we merge again.
>
> What am i doing wrong here?

Don't do tests on the master branch.  Or at least, do as little as possible.  Also, try not to revert merges.  Depending on your workflow and team synamics it might be easier to rewrite history than wrangle reverts of a merge commit.
-- 
Boyd Stephen Smith Jr.                     ,= ,-_-. =. 
bss@iguanasuicide.net                     ((_/)o o(\_))
ICQ: 514984 YM/AIM: DaTwinkDaddy           `-'(. .)`-' 
http://iguanasuicide.net/                      \_/     

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 197 bytes --]

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

* Re: Odd merge behaviour involving reverts
  2008-12-18 23:25 Odd merge behaviour involving reverts Alan
  2008-12-18 23:58 ` Linus Torvalds
  2008-12-19  1:30 ` Boyd Stephen Smith Jr.
@ 2008-12-19  3:44 ` Nanako Shiraishi
  2008-12-19  4:01   ` Linus Torvalds
                     ` (2 more replies)
  2 siblings, 3 replies; 17+ messages in thread
From: Nanako Shiraishi @ 2008-12-19  3:44 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Alan, git

Quoting Linus Torvalds <torvalds@linux-foundation.org>:

> On Thu, 18 Dec 2008, Alan wrote:
>> 
>> What am i doing wrong here?
>
> Reverting a merge is your problem.
>
> You can do it, but you seem to have done it without understanding what it 
> causes.
>
> A revert of a merge becomes a regular commit that just undoes everything 
> that the merge did in your branch. When you then do the next merge, you'll 
> do that merge with that in mind, so now git will essentially consider the 
> previous merge to be the base line, but your revert undid everything that 
> that one brought in, so the new merge will really only contain the new 
> stuff from the branch you are merging. 
>
> So if a merge causes problems, you generally should either undo it 
> _entirely_ (ie do a 'git reset --hard ORIG_HEAD'), not revert it. 
>
> Of course, if you had already made the merged state public, or done 
> development on top of it, you can't really do that. In which case a revert 
> works, but if you want it back, you should revert the revert, not merge 
> the branch again - because what you merged last time you threw away, and 
> won't be applied again.

If I understand Alan's case correctly, I think he does not want to "undo" the revert but wants to merge an updated version of the branch, as if no mistaken merge nor its revert happened in the past.

If you revert the revert on the branch before merging, doesn't it mean that you will be merging what the older version of the branch did (that is in the revert of the revert as a single huge patch) and what the updated version of the branch wants to do?  Wouldn't that lead to a mess with huge conflicts?

-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/

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

* Re: Odd merge behaviour involving reverts
  2008-12-19  3:44 ` Nanako Shiraishi
@ 2008-12-19  4:01   ` Linus Torvalds
  2008-12-19  4:18     ` Jay Soffian
  2008-12-19  5:24     ` Daniel Barkalow
  2008-12-19  8:45   ` Junio C Hamano
  2008-12-19 21:45   ` Nanako Shiraishi
  2 siblings, 2 replies; 17+ messages in thread
From: Linus Torvalds @ 2008-12-19  4:01 UTC (permalink / raw)
  To: Nanako Shiraishi; +Cc: Alan, git



On Fri, 19 Dec 2008, Nanako Shiraishi wrote:
> 
> If you revert the revert on the branch before merging, doesn't it mean 
> that you will be merging what the older version of the branch did (that 
> is in the revert of the revert as a single huge patch) and what the 
> updated version of the branch wants to do?  Wouldn't that lead to a mess 
> with huge conflicts?

Actually, the reverse is likely true. If the branch you are merging is 
actually doing something branch-specific - ie it's a "topic branch", then 
it's likely that the new stuff that is on that branch depends on the 
previous stuff on the branch.

And thats' the thing that got reverted - so with just a revert, it's quite 
likely that you'll get conflicts. But if you revert the revert, now the 
new stuff you're merging actually makes more sense, and is less likely to 
conflict.

Another way of looking at it is that a merge is something that can be done 
both ways: think of the _other_ branch merging yours. The original revert 
ends up being a big change-patch that undoes everything that other branch 
did, so now if that other branch were to merge the main branch, you'd be 
merging a lot of changes. But reverting the revert will undo all those 
changes, so again, it's more likely that the merge will succeed.

So revertign a revert is usually going to make subsequent merges easier 
rather than the reverse. 

The _big_ problem with reverting a whole merge is that it effectively 
becomes one commit that does a big change. That's how _normal_ merges tend 
to look like in CVS or SVN (ie the "merge" is really just another commit 
that brings in a lot of changes), and it's a total and utter f*cking 
disaster!

But don't get me wrong - it's not something you can't work with. I'm just 
trying to say that it's absolutely not a "good model". It's workable, but 
it has all these painful issues.

For example, think about what reverting a merge (and then reverting the 
revert) does to bisectability. Ignore the fact that the revert of a revert 
is undoing it - just think of it as a "single commit that does a lot". 
Because that is what it does.

When you have a problem you are chasing down, and you hit a "revert this 
merge", what you're hitting is essentially a single commit that contains 
all the changes (but obviously in reverse) of all the commits that got 
merged. So it's debugging hell, because now you don't have lots of small 
changes that you can try to pinpoint which _part_ of it changes.

But does it all work? Sure it does. You can revert a merge, and from a 
purely technical angle, git did it very naturally and had no real 
troubles. It just considered it a change from "state before merge" to 
"state after merge", and that was it. Nothing complicated, nothing odd, 
nothing really dangerous. Git will do it without even thinking about it.

So from a technical angle, there's nothing wrong with reverting a merge, 
but from a workflow angle it's something that you generally should try to 
avoid. 

If at all possible, for example, if you find a problem that got merged 
into the main tree, rather than revert the merge, try _really_ hard to 
bisect the problem down into the branch you merged, and just fix it, or 
try to revert the individual commit that caused it.

Yes, it's more complex, and no, it's not always going to work (sometimes 
the answer is: "oops, I really shouldn't have merged it, because it wasn't 
ready yet, and I really need to undo _all_ of the merge"). So then you 
really should revert the merge, but when you want to re-do the merge, you 
now need to do it by reverting the revert.

		Linus

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

* Re: Odd merge behaviour involving reverts
  2008-12-19  4:01   ` Linus Torvalds
@ 2008-12-19  4:18     ` Jay Soffian
  2008-12-19  4:23       ` Linus Torvalds
  2008-12-19  5:24     ` Daniel Barkalow
  1 sibling, 1 reply; 17+ messages in thread
From: Jay Soffian @ 2008-12-19  4:18 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Nanako Shiraishi, Alan, git

On Thu, Dec 18, 2008 at 11:01 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
> Yes, it's more complex, and no, it's not always going to work (sometimes
> the answer is: "oops, I really shouldn't have merged it, because it wasn't
> ready yet, and I really need to undo _all_ of the merge"). So then you
> really should revert the merge, but when you want to re-do the merge, you
> now need to do it by reverting the revert.

Instead of reverting the revert, why not rebase the branch which was
merged to the point after the revert was done?

j.

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

* Re: Odd merge behaviour involving reverts
  2008-12-19  4:18     ` Jay Soffian
@ 2008-12-19  4:23       ` Linus Torvalds
  0 siblings, 0 replies; 17+ messages in thread
From: Linus Torvalds @ 2008-12-19  4:23 UTC (permalink / raw)
  To: Jay Soffian; +Cc: Nanako Shiraishi, Alan, git



On Thu, 18 Dec 2008, Jay Soffian wrote:
> 
> Instead of reverting the revert, why not rebase the branch which was
> merged to the point after the revert was done?

Sure, you can do that too. However, that has its own set of problems, ie 
all the "ok, who else was working based on this branch" thing.

But no, there are no single right answers. Rebasing may well be a 
reasonable approach.

		Linus

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

* Re: Odd merge behaviour involving reverts
  2008-12-19  4:01   ` Linus Torvalds
  2008-12-19  4:18     ` Jay Soffian
@ 2008-12-19  5:24     ` Daniel Barkalow
  1 sibling, 0 replies; 17+ messages in thread
From: Daniel Barkalow @ 2008-12-19  5:24 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: Nanako Shiraishi, Alan, git

On Thu, 18 Dec 2008, Linus Torvalds wrote:

> On Fri, 19 Dec 2008, Nanako Shiraishi wrote:
> > 
> > If you revert the revert on the branch before merging, doesn't it mean 
> > that you will be merging what the older version of the branch did (that 
> > is in the revert of the revert as a single huge patch) and what the 
> > updated version of the branch wants to do?  Wouldn't that lead to a mess 
> > with huge conflicts?
> 
> Actually, the reverse is likely true. If the branch you are merging is 
> actually doing something branch-specific - ie it's a "topic branch", then 
> it's likely that the new stuff that is on that branch depends on the 
> previous stuff on the branch.
> 
> And thats' the thing that got reverted - so with just a revert, it's quite 
> likely that you'll get conflicts. But if you revert the revert, now the 
> new stuff you're merging actually makes more sense, and is less likely to 
> conflict.
> 
> Another way of looking at it is that a merge is something that can be done 
> both ways: think of the _other_ branch merging yours. The original revert 
> ends up being a big change-patch that undoes everything that other branch 
> did, so now if that other branch were to merge the main branch, you'd be 
> merging a lot of changes. But reverting the revert will undo all those 
> changes, so again, it's more likely that the merge will succeed.
> 
> So revertign a revert is usually going to make subsequent merges easier 
> rather than the reverse. 
> 
> The _big_ problem with reverting a whole merge is that it effectively 
> becomes one commit that does a big change. That's how _normal_ merges tend 
> to look like in CVS or SVN (ie the "merge" is really just another commit 
> that brings in a lot of changes), and it's a total and utter f*cking 
> disaster!

Another option is to do the big revert on the master branch, and on the 
side branch merge the parent of the revert (normally), and then merge the 
revert but take the side branch tree.

That last merge puts the revert in the branch's history, but rejects its 
effects. Now merging the branch again will find the revert to be the 
common ancestor, and see the full change of the side branch as the 
contribution of that side. Also, blame will come down the side branch, 
ignore the merge (on the side branch, the merge contributed no content 
changes), and go into the original side branch commits.

You can also think of it as the side branch saying, "I noticed that you 
reverted my changes, but I'm keeping them anyway". When the final merge 
comes, git will see that the revert isn't new information to the side 
branch, and nullify its effect. (Of course, the side branch needs to merge 
the parent of the revert so that it isn't rejecting the other changes made 
on the main branch before the revert)

	-Daniel
*This .sig left intentionally blank*

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

* Re: Odd merge behaviour involving reverts
  2008-12-19  3:44 ` Nanako Shiraishi
  2008-12-19  4:01   ` Linus Torvalds
@ 2008-12-19  8:45   ` Junio C Hamano
  2008-12-19 21:45   ` Nanako Shiraishi
  2 siblings, 0 replies; 17+ messages in thread
From: Junio C Hamano @ 2008-12-19  8:45 UTC (permalink / raw)
  To: Nanako Shiraishi; +Cc: Linus Torvalds, Alan, git

Nanako Shiraishi <nanako3@lavabit.com> writes:

> If I understand Alan's case correctly, I think he does not want to
> "undo" the revert but wants to merge an updated version of the branch,
> as if no mistaken merge nor its revert happened in the past.
>
> If you revert the revert on the branch before merging, doesn't it mean
> that you will be merging what the older version of the branch did (that
> is in the revert of the revert as a single huge patch) and what the
> updated version of the branch wants to do?  Wouldn't that lead to a mess
> with huge conflicts?

The history immediately after the "revert of the merge" would look like
this:

 ---o---o---o---M---x---x---W---x
               /     
       ---A---B

where A and B are on the side development that was not so good, M is the
merge that brings those premature changes into the mainline, x are
unrelated changes already made on the mainline and W is the "revert of the
merge M" (doesn't W look M upside down?).  IOW, "diff W^..W" is similar to
"diff -R M^..M".

I think you misunderstood what "merging an updated version of the branch"
meant by Alan's description to mean that the side branch developers
discarded their faulty A and B, and redone the changes, which would have
resulted in something like:

 ---o---o---o---M---x---x---W---x---x
                                 \
                                  A'--B'--C'

If that were the situation, suggestion by Linus to revert the revert and
then merge would result in something like this:

 ---o---o---o---M---x---x---W---x---x---Y---*
                                 \         /
                                  A'--B'--C'

where Y is the revert of W, A' and B'are rerolled A and B, and there may
also be a further fix-up C' on the side branch.  "diff Y^..Y" is similar
to "diff -R W^..W" (which in turn means it is similar to "diff M^..M"),
and "diff A'^..C'" by definition would be similar but different from that,
because it is a rerolled series of the earlier change.  There would be a
lot of overlap as you feared.  In such a case, not having Y (revert of the
revert) would result in a much more trivial merge:

 ---o---o---o---M---x---x---W---x---x-------*
                                 \         /
                                  A'--B'--C'

because problematic large commits M and W are already outside of the scope
of this final merge.

But I think what Alan's developers did is different.  They did this
instead:

 ---o---o---o---M---x---x---W---x
               /
       ---A---B-------------------C---D

where C and D are to fix what was broken in A and B.  In such a situation,
what Linus suggests makes perfect sense.  You first revert the revert,
which would result in this:

 ---o---o---o---M---x---x---W---x---Y
               /
       ---A---B-------------------C---D

where Y is the revert of W, which would (ignoring possible conflicts
between what W and W..Y changed) be equivalent to not having W nor Y at
all in the history:

 ---o---o---o---M---x---x-------x----
               /
       ---A---B-------------------C---D

and merging the side branch again will not have conflict arising from an
earlier revert and revert of revert.

 ---o---o---o---M---x---x-------x-------*
               /                       /
       ---A---B-------------------C---D

Of course the changes made in C and D still can conflict with what was
done by any of the x, but that is just a normal merge conflict.

To recap, these are two very different scenarios, and wants two very
different resolution strategies:

 - If the faulty side branch whose effects were discarded by an earlier
   revert of a merge was rebuilt from scratch (i.e. rebasing and fixing,
   as you seem to have interpreted), then re-merging the result without
   doing anything else fancy would be the right thing to do.

 - If the faulty side branch was fixed by adding corrections on top, then
   doing a revert of the previous revert would be the right thing to do.

I hope this clears up confusion and fear.

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

* Re: Odd merge behaviour involving reverts
  2008-12-19  3:44 ` Nanako Shiraishi
  2008-12-19  4:01   ` Linus Torvalds
  2008-12-19  8:45   ` Junio C Hamano
@ 2008-12-19 21:45   ` Nanako Shiraishi
  2008-12-19 23:05     ` Junio C Hamano
  2008-12-19 23:12     ` Nanako Shiraishi
  2 siblings, 2 replies; 17+ messages in thread
From: Nanako Shiraishi @ 2008-12-19 21:45 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Linus Torvalds, Alan, git

Quoting Junio C Hamano <gitster@pobox.com>:

> I hope this clears up confusion and fear.

You are correct that I misunderstood what Alan meant by corrected branch.

I think your explanation will help people if we make it part of the documentation.  Especially because two different cases need two different recovery methods, and people need to learn which is which.

Thank you for your detailed response.
-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/

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

* Re: Odd merge behaviour involving reverts
  2008-12-19 21:45   ` Nanako Shiraishi
@ 2008-12-19 23:05     ` Junio C Hamano
  2008-12-19 23:12     ` Nanako Shiraishi
  1 sibling, 0 replies; 17+ messages in thread
From: Junio C Hamano @ 2008-12-19 23:05 UTC (permalink / raw)
  To: Nanako Shiraishi; +Cc: Linus Torvalds, Alan, git

Nanako Shiraishi <nanako3@lavabit.com> writes:

> I think your explanation will help people if we make it part of the
> documentation.  Especially because two different cases need two
> different recovery methods, and people need to learn which is which.

Sure.  It needs copyediting to make it readable standalone by not
mentioning "your misunderstanding", inlining "earlier Linus's suggestion",
etc., though.

Patches welcome ;-)

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

* Re: Odd merge behaviour involving reverts
  2008-12-19 21:45   ` Nanako Shiraishi
  2008-12-19 23:05     ` Junio C Hamano
@ 2008-12-19 23:12     ` Nanako Shiraishi
  2008-12-19 23:51       ` Junio C Hamano
  1 sibling, 1 reply; 17+ messages in thread
From: Nanako Shiraishi @ 2008-12-19 23:12 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Linus Torvalds, Alan, git

Quoting Junio C Hamano <gitster@pobox.com>:

> Nanako Shiraishi <nanako3@lavabit.com> writes:
>
>> I think your explanation will help people if we make it part of the
>> documentation.  Especially because two different cases need two
>> different recovery methods, and people need to learn which is which.
>
> Sure.  It needs copyediting to make it readable standalone by not
> mentioning "your misunderstanding", inlining "earlier Linus's suggestion",
> etc., though.
>
> Patches welcome ;-)

Okay, I'll send one later.

Thanks.
-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/

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

* Re: Odd merge behaviour involving reverts
  2008-12-19 23:12     ` Nanako Shiraishi
@ 2008-12-19 23:51       ` Junio C Hamano
  0 siblings, 0 replies; 17+ messages in thread
From: Junio C Hamano @ 2008-12-19 23:51 UTC (permalink / raw)
  To: Nanako Shiraishi; +Cc: Linus Torvalds, Alan, git

Nanako Shiraishi <nanako3@lavabit.com> writes:

> Quoting Junio C Hamano <gitster@pobox.com>:
>
>> Nanako Shiraishi <nanako3@lavabit.com> writes:
>>
>>> I think your explanation will help people if we make it part of the
>>> documentation.  Especially because two different cases need two
>>> different recovery methods, and people need to learn which is which.
>>
>> Sure.  It needs copyediting to make it readable standalone by not
>> mentioning "your misunderstanding", inlining "earlier Linus's suggestion",
>> etc., though.
>>
>> Patches welcome ;-)
>
> Okay, I'll send one later.

Thanks.

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

end of thread, other threads:[~2008-12-19 23:53 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-18 23:25 Odd merge behaviour involving reverts Alan
2008-12-18 23:58 ` Linus Torvalds
2008-12-19  0:11   ` Alan
2008-12-19  0:21     ` Linus Torvalds
2008-12-19  0:35       ` Alan
2008-12-19  0:46         ` Linus Torvalds
2008-12-19  1:30 ` Boyd Stephen Smith Jr.
2008-12-19  3:44 ` Nanako Shiraishi
2008-12-19  4:01   ` Linus Torvalds
2008-12-19  4:18     ` Jay Soffian
2008-12-19  4:23       ` Linus Torvalds
2008-12-19  5:24     ` Daniel Barkalow
2008-12-19  8:45   ` Junio C Hamano
2008-12-19 21:45   ` Nanako Shiraishi
2008-12-19 23:05     ` Junio C Hamano
2008-12-19 23:12     ` Nanako Shiraishi
2008-12-19 23:51       ` 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).