how to solve a conflicting editing for someone (using backout?), but cannot merge since there is only one head
Uwe Brauer
oub at mat.ucm.es
Fri Jun 23 20:08:15 UTC 2023
>>> "BMJ" == Becker, Mischa J <mischa.becker at kroger.com> writes:
Hi all,
First of all thanks very much to all of your for your proposed solution(s).
I seem now to understand its logic a bit better. I face th situation I
described quite often, since I collaborate with a lot of people that
basically know only
hg commit -m "Message"
hg push
hg fetch
(hg fetch since it is easier for them than hg pull -u and hg merge)
> Even if you create a 2nd head as Rainer suggested, you still have the
> problem that the backout, rev 7, happens later in the tree than rev 6
> so future merges will continue to backout the rev 6 changes.
Aha, I did not realize this,
I tried his solution out but before answering I received your
email, so that might then not be the best solution
> Backing out rev 7 while on rev 9 essentially merges in your changes
> from rev 6. If you don't like it because it doesn't show in the tree
> as a merge,
Right, Pierre-Yves and Mitchell's solution work, but the merge is not
displayed in the graph (and this I don't like)
> then update to rev 7 before backing it out. That both creates a
> new head, so you can merge, AND puts a copy of your rev 6 changes
> after the rev 7 backout so merge won't discard them.
Aha, I would never ever have expected that it makes a difference from
«where» I make a backout, but I have to say I like this solution a lot.
> If you really don't want to back out the backout, the only other
> option I know of is to update to rev 6 and do your own correct merge
> with rev 8. The only difference between your new merge and rev 9
> should be the backout so you can now merge with rev 9 and throw away
> all of its changes.
Well if do this I first create this sort of
graph
@ changeset: 10:6535da53c78e
│╲ tag: tip
│ │ Branch: default
│ │ Author: Uwe Brauer <oub at mat.ucm.es>
│ │ Date: Fri, 23 Jun 2023 19:54:08 +0200
│ │ Phase: draft
│ │ Summary: Merged the conflicting changesets, ignored the backout
│ │
│ │ ○ changeset: 9:74ef1c9b7f02
│ │╱│ Remote_Branch: default/default
│ │ │ Branch: default
│ │ │ Author: Uwe Brauer <oub at mat.ucm.es>
│ │ │ Date: Fri, 23 Jun 2023 19:42:53 +0200
│ │ │ Phase: public
│ │ │ Summary: Automated merge with file:///home/oub/HGTest/Backout/Test/Server
│ │ │
And I have then to merge 9+10 (so this graph looks a bit uglier than
your backout solution.
◍ changeset: 11:8f7c2a5555f4
│╲ tag: tip
│ │ Branch: default
│ │ Author: Uwe Brauer <oub at mat.ucm.es>
│ │ Date: Fri, 23 Jun 2023 19:56:30 +0200
│ │ Phase: draft
│ │ Summary: Merge all heads
│ │
│ ○ changeset: 10:6535da53c78e
│ │╲ Branch: default
│ │ │ Author: Uwe Brauer <oub at mat.ucm.es>
│ │ │ Date: Fri, 23 Jun 2023 19:54:08 +0200
│ │ │ Phase: draft
│ │ │ Summary: Merged the conflicting changesets, ignored the backout
│ │ │
○───┤ changeset: 9:74ef1c9b7f02
│ │ │ Remote_Branch: default/default
│ │ │ Branch: default
│ │ │ Author: Uwe Brauer <oub at mat.ucm.es>
│ │ │ Date: Fri, 23 Jun 2023 19:42:53 +0200
│ │ │ Phase: public
│ │ │ Summary: Automated merge with file:///home/oub/HGTest/Backout/Test/Server
So I summarise.
Just to make clear that, I modified the commands a bit since it is some
time ago, that I sent my question to the list.
So here are the commands I used
1. I create a server repository running (create.sh)
2. Uwe+Bernhard clone it
3. Uwe runs
echo "Uwe: RH is FALSE" >> test.org
hg commit -m "Uwe: Conflict RH is FALSE"
4. Uwe pushes
5. Bernhard runs
echo "Bernhard: RH is TRUE" >> test.org
hg commit -u "Bernhard Riemann <berniegmail.com> " -m "Bernhard, Conflict RH is TRUE"
hg push (will not work)
hg fetch
it fails conflict.
6. Uwe backout his last change set
hg backout -r 6
hg push
7. Bernhard
hg fetch
hg push
8. Uwe:
hg pull -u
and I end up
@ changeset: 9:74ef1c9b7f02
│╲ tag: tip
│ │ Remote_Branch: default/default
│ │ Branch: default
│ │ Author: Uwe Brauer <oub at mat.ucm.es>
│ │ Date: Fri, 23 Jun 2023 19:42:53 +0200
│ │ Phase: public
│ │ Summary: Automated merge with file:///home/oub/HGTest/Backout/Test/Server
│ │
│ ○ changeset: 8:529b1a456787
│ │ Branch: default
│ │ Author: Bernhard Riemann <berniegmail.com>
│ │ Date: Fri, 23 Jun 2023 19:41:19 +0200
│ │ Phase: public
│ │ Summary: Bernhard, Conflict RH is TRUE
│ │
○ │ changeset: 7:31e073727e68
│ │ Branch: default
│ │ Author: Uwe Brauer <oub at mat.ucm.es>
│ │ Date: Fri, 23 Jun 2023 19:42:08 +0200
│ │ Phase: public
│ │ Summary: Backout the conflict about RH
│ │
○ │ changeset: 6:12841e6c7be3
│╱ Branch: default
│ Author: Uwe Brauer <oub at mat.ucm.es>
│ Date: Fri, 23 Jun 2023 19:41:35 +0200
│ Phase: public
│ Summary: Uwe: Conflict RH is FALSE
Pierres-Yves solution
hg backout -r 7
◍ changeset: 10:3ed026f278f9
│ tag: tip
│ Branch: default
│ Author: Uwe Brauer <oub at mat.ucm.es>
│ Date: Fri, 23 Jun 2023 21:51:17 +0200
│ Phase: draft
│ Summary: Merge tip with changeset 31207
│
○ changeset: 9:74ef1c9b7f02
│╲ Remote_Branch: default/default
│ │ Branch: default
│ │ Author: Uwe Brauer <oub at mat.ucm.es>
│ │ Date: Fri, 23 Jun 2023 19:42:53 +0200
│ │ Phase: public
│ │ Summary: Automated merge with file:///home/oub/HGTest/Backout/Test/Server
│ │
I don't like the graph.
Your solution:
Hg up -r 7
hg backout -r 7
creates a head makes a merge possible and ends up with.
changeset: 11:ec803565629c
│╲ tag: tip
│ │ Branch: default
│ │ Author: Uwe Brauer <oub at mat.ucm.es>
│ │ Date: Fri, 23 Jun 2023 21:55:42 +0200
│ │ Phase: draft
│ │ Summary: Merge both conflicting edits
│ │
│ ○ changeset: 10:cab242b7b17a
│ │ Branch: default
│ │ Author: Uwe Brauer <oub at mat.ucm.es>
│ │ Date: Fri, 23 Jun 2023 21:53:20 +0200
│ │ Phase: draft
│ │ Summary: Backed out changeset 31e073727e68
│ │
Your last proposals ends up in this rather ugly graph, I just mentioned.
Thanks again all of your for your help
Uwe
-------------- next part --------------
A non-text attachment was scrubbed...
Name: create.sh
Type: text/x-sh
Size: 422 bytes
Desc: not available
URL: <http://lists.mercurial-scm.org/pipermail/mercurial/attachments/20230623/0613df17/attachment.sh>
More information about the Mercurial
mailing list