<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>.:: Marcos Dione/StyXman's glob ::. (Posts about mercurial)</title><link>https://www.grulic.org.ar/~mdione/glob/</link><description></description><atom:link href="https://www.grulic.org.ar/~mdione/glob/categories/mercurial.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2025 &lt;a href="mailto:mdione@grulic.org.ar"&gt;Marcos Dione&lt;/a&gt; </copyright><lastBuildDate>Thu, 29 May 2025 15:41:12 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Merging disjoint histories with mercurial</title><link>https://www.grulic.org.ar/~mdione/glob/posts/merging-disjoint-histories-with-mercurial/</link><dc:creator>Marcos Dione</dc:creator><description>&lt;p&gt;At work I was tasked to develop three different lines of work. Each one seemed
to be auto-contained and with an specific and compact obective. Of course, for
each one of these projects, I set up a VCS repo. The chosen one here at work is
Mercurial.&lt;/p&gt;
&lt;p&gt;But then, the fourth task proved to be the integration of the three previous
tasks in one demo that would show them off and then evolve into an application.
At fisrt I just relied on setting up a fourth repo, adding to it only the new
files, and symlinking the files I needed from the other repos. It was hacky, but
it allowed me to continue the development quickly, and as long as I kept making
commits in the four different repos, all was peachy.&lt;/p&gt;
&lt;p&gt;Today, after the demo was presented, it occured to me that this setup wasn't
easy to share with the rest of the team. So far I was working alone, but now
that this project will get more and more developers, sharing was crucial.&lt;/p&gt;
&lt;p&gt;So I asked in &lt;code&gt;#mercurial&lt;/code&gt; and the short answer was:&lt;/p&gt;
&lt;p&gt;11:13 &amp;lt; hstuart&amp;gt; StucKman, you can pull --force and merge the unrelated heads together, but it'll be a two-way merge and there'll potentially be a lot of conflict resolution if they have diverged in the same files&lt;/p&gt;
&lt;p&gt;As the four repos had disjoint file set, this seemed enough for me. So, the
first step was to set up a fifth empty clean repo:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;init
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;No surprises there. Now I pulled from the four lines of history from other
directories:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;pull&lt;span class="w"&gt; &lt;/span&gt;--force&lt;span class="w"&gt; &lt;/span&gt;../soap/
pulling&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;../soap/
requesting&lt;span class="w"&gt; &lt;/span&gt;all&lt;span class="w"&gt; &lt;/span&gt;changes
adding&lt;span class="w"&gt; &lt;/span&gt;changesets
adding&lt;span class="w"&gt; &lt;/span&gt;manifests
adding&lt;span class="w"&gt; &lt;/span&gt;file&lt;span class="w"&gt; &lt;/span&gt;changes
added&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changesets&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;9&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changes&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files
&lt;span class="o"&gt;(&lt;/span&gt;run&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'hg update'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;get&lt;span class="w"&gt; &lt;/span&gt;a&lt;span class="w"&gt; &lt;/span&gt;working&lt;span class="w"&gt; &lt;/span&gt;copy&lt;span class="o"&gt;)&lt;/span&gt;

$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;pull&lt;span class="w"&gt; &lt;/span&gt;--force&lt;span class="w"&gt; &lt;/span&gt;../stomp/
pulling&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;../stomp/
searching&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changes
warning:&lt;span class="w"&gt; &lt;/span&gt;repository&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;unrelated
adding&lt;span class="w"&gt; &lt;/span&gt;changesets
adding&lt;span class="w"&gt; &lt;/span&gt;manifests
adding&lt;span class="w"&gt; &lt;/span&gt;file&lt;span class="w"&gt; &lt;/span&gt;changes
added&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;43&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changesets&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;49&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changes&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;+1&lt;span class="w"&gt; &lt;/span&gt;heads&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;run&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'hg heads'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;see&lt;span class="w"&gt; &lt;/span&gt;heads,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'hg merge'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;merge&lt;span class="o"&gt;)&lt;/span&gt;

$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;pull&lt;span class="w"&gt; &lt;/span&gt;--force&lt;span class="w"&gt; &lt;/span&gt;../phidgets/
pulling&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;../phidgets/
searching&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changes
warning:&lt;span class="w"&gt; &lt;/span&gt;repository&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;unrelated
adding&lt;span class="w"&gt; &lt;/span&gt;changesets
adding&lt;span class="w"&gt; &lt;/span&gt;manifests
adding&lt;span class="w"&gt; &lt;/span&gt;file&lt;span class="w"&gt; &lt;/span&gt;changes
added&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;29&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changesets&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;40&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changes&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;+1&lt;span class="w"&gt; &lt;/span&gt;heads&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;run&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'hg heads'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;see&lt;span class="w"&gt; &lt;/span&gt;heads,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'hg merge'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;merge&lt;span class="o"&gt;)&lt;/span&gt;

$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;pull&lt;span class="w"&gt; &lt;/span&gt;--force&lt;span class="w"&gt; &lt;/span&gt;../smartimmo/
pulling&lt;span class="w"&gt; &lt;/span&gt;from&lt;span class="w"&gt; &lt;/span&gt;../smartimmo/
searching&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changes
warning:&lt;span class="w"&gt; &lt;/span&gt;repository&lt;span class="w"&gt; &lt;/span&gt;is&lt;span class="w"&gt; &lt;/span&gt;unrelated
adding&lt;span class="w"&gt; &lt;/span&gt;changesets
adding&lt;span class="w"&gt; &lt;/span&gt;manifests
adding&lt;span class="w"&gt; &lt;/span&gt;file&lt;span class="w"&gt; &lt;/span&gt;changes
added&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;26&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changesets&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;58&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;changes&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;+1&lt;span class="w"&gt; &lt;/span&gt;heads&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;(&lt;/span&gt;run&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'hg heads'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;see&lt;span class="w"&gt; &lt;/span&gt;heads,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'hg merge'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;merge&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;So far so good. I checked with &lt;code&gt;hgview&lt;/code&gt; what I had: four lines of history with
no common point. Do you see that each pull made a new head? Here, look:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;heads
changeset:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;104&lt;/span&gt;:a923c43e33fa
tag:&lt;span class="w"&gt;         &lt;/span&gt;tip
user:&lt;span class="w"&gt;        &lt;/span&gt;Marcos&lt;span class="w"&gt; &lt;/span&gt;Dione&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;mdione@sophia.inrira.fr&amp;gt;
date:&lt;span class="w"&gt;        &lt;/span&gt;Fri&lt;span class="w"&gt; &lt;/span&gt;Dec&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;17&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;:04:24&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2010&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;+0100
summary:&lt;span class="w"&gt;     &lt;/span&gt;*&lt;span class="w"&gt; &lt;/span&gt;soft-coded&lt;span class="w"&gt; &lt;/span&gt;image&lt;span class="w"&gt; &lt;/span&gt;filepaths&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;patch&lt;span class="w"&gt; &lt;/span&gt;by&lt;span class="w"&gt; &lt;/span&gt;Manuel&lt;span class="o"&gt;)&lt;/span&gt;.

changeset:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;78&lt;/span&gt;:1a3faf6e6e8a
branch:&lt;span class="w"&gt;      &lt;/span&gt;single-ifkit
user:&lt;span class="w"&gt;        &lt;/span&gt;Marcos&lt;span class="w"&gt; &lt;/span&gt;Dione&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;mdione@sophia.inrira.fr&amp;gt;
date:&lt;span class="w"&gt;        &lt;/span&gt;Thu&lt;span class="w"&gt; &lt;/span&gt;Dec&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;:12:40&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2010&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;+0100
summary:&lt;span class="w"&gt;     &lt;/span&gt;*&lt;span class="w"&gt; &lt;/span&gt;wrong&lt;span class="w"&gt; &lt;/span&gt;message&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;up-&amp;gt;&lt;span class="w"&gt; &lt;/span&gt;nobody.

changeset:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;74&lt;/span&gt;:53c2942a8548
user:&lt;span class="w"&gt;        &lt;/span&gt;Marcos&lt;span class="w"&gt; &lt;/span&gt;Dione&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;mdione@grulic.org.ar&amp;gt;
date:&lt;span class="w"&gt;        &lt;/span&gt;Wed&lt;span class="w"&gt; &lt;/span&gt;Dec&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;01&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;14&lt;/span&gt;:58:53&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2010&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;+0100
summary:&lt;span class="w"&gt;     &lt;/span&gt;*&lt;span class="w"&gt; &lt;/span&gt;s/state-update/light-state-update/&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;event&lt;span class="w"&gt; &lt;/span&gt;name,&lt;span class="w"&gt; &lt;/span&gt;so&lt;span class="w"&gt; &lt;/span&gt;it&lt;span class="w"&gt; &lt;/span&gt;doesn´t&lt;span class="w"&gt; &lt;/span&gt;clash&lt;span class="w"&gt; &lt;/span&gt;with&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;same&lt;span class="w"&gt; &lt;/span&gt;event&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;the&lt;span class="w"&gt; &lt;/span&gt;temp&lt;span class="w"&gt; &lt;/span&gt;controller.

changeset:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;49&lt;/span&gt;:9480820604fe
user:&lt;span class="w"&gt;        &lt;/span&gt;Marcos&lt;span class="w"&gt; &lt;/span&gt;Dione&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;mdione@sophia.inrira.fr&amp;gt;
date:&lt;span class="w"&gt;        &lt;/span&gt;Thu&lt;span class="w"&gt; &lt;/span&gt;Dec&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;16&lt;/span&gt;:13:04&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2010&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;+0100
summary:&lt;span class="w"&gt;     &lt;/span&gt;+&lt;span class="w"&gt; &lt;/span&gt;si-heater-switch.

changeset:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;:be775f2b6af5
user:&lt;span class="w"&gt;        &lt;/span&gt;Marcos&lt;span class="w"&gt; &lt;/span&gt;Dione&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;mdione@sophia.inrira.fr&amp;gt;
date:&lt;span class="w"&gt;        &lt;/span&gt;Fri&lt;span class="w"&gt; &lt;/span&gt;Jul&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;09&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;:43:58&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2010&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;+0200
summary:&lt;span class="w"&gt;     &lt;/span&gt;*&lt;span class="w"&gt; &lt;/span&gt;cleanup.
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Notice how the tip is set to the tip of the last repo I pulled from. If you're
very 'detaillist' (I'm not sure that word exists in English; it does in Spanish),
take that in account. Me, I didn't care that much. So the next step was to merge
them:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;merge&lt;span class="w"&gt; &lt;/span&gt;--force&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;6&lt;/span&gt;
&lt;span class="m"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;updated,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;merged,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;removed,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;unresolved
&lt;span class="o"&gt;(&lt;/span&gt;branch&lt;span class="w"&gt; &lt;/span&gt;merge,&lt;span class="w"&gt; &lt;/span&gt;don´t&lt;span class="w"&gt; &lt;/span&gt;forget&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="o"&gt;)&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;ci&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"|\ soap history."&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The first one went fine, but the second one presented a small problem:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;merge&lt;span class="w"&gt; &lt;/span&gt;--force&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;49&lt;/span&gt;
merging&lt;span class="w"&gt; &lt;/span&gt;smart-immo.scm
merging&lt;span class="w"&gt; &lt;/span&gt;smart-immo.scm&lt;span class="w"&gt; &lt;/span&gt;failed!
&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;updated,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;merged,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;removed,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;unresolved
use&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'hg resolve'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;retry&lt;span class="w"&gt; &lt;/span&gt;unresolved&lt;span class="w"&gt; &lt;/span&gt;file&lt;span class="w"&gt; &lt;/span&gt;merges&lt;span class="w"&gt; &lt;/span&gt;or&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s1"&gt;'hg update -C'&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;abandon
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;So I went back, before the merge, moved the file, and continued:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;update&lt;span class="w"&gt; &lt;/span&gt;-C&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;105&lt;/span&gt;
&lt;span class="m"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;updated,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;merged,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;7&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;removed,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;unresolved
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;mv&lt;span class="w"&gt; &lt;/span&gt;smart-immo.scm&lt;span class="w"&gt; &lt;/span&gt;smart-immo-soap.scm
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;ci&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"* rename to avoid file clashes."&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;merge&lt;span class="w"&gt; &lt;/span&gt;--force&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;49&lt;/span&gt;
&lt;span class="m"&gt;8&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;updated,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;merged,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;removed,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;unresolved
&lt;span class="o"&gt;(&lt;/span&gt;branch&lt;span class="w"&gt; &lt;/span&gt;merge,&lt;span class="w"&gt; &lt;/span&gt;don´t&lt;span class="w"&gt; &lt;/span&gt;forget&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="o"&gt;)&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;ci&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"|\ obix/stomp history."&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;merge&lt;span class="w"&gt; &lt;/span&gt;--force&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;74&lt;/span&gt;
&lt;span class="m"&gt;6&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;updated,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;merged,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;removed,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;unresolved
&lt;span class="o"&gt;(&lt;/span&gt;branch&lt;span class="w"&gt; &lt;/span&gt;merge,&lt;span class="w"&gt; &lt;/span&gt;don´t&lt;span class="w"&gt; &lt;/span&gt;forget&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="o"&gt;)&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;ci&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"|\ smartimmo demo history."&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;I still had something left: one of the hsitories had a branch which wasn't
&lt;code&gt;default&lt;/code&gt; but was &lt;code&gt;tip&lt;/code&gt;, so I had to merge that too. I don't like how this is
done in Mercurial, but I know the moves:&lt;/p&gt;
&lt;div class="code"&gt;&lt;pre class="code literal-block"&gt;$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;update&lt;span class="w"&gt; &lt;/span&gt;-C&lt;span class="w"&gt; &lt;/span&gt;single-ifkit
&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;updated,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;merged,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;31&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;removed,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;unresolved
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;ci&lt;span class="w"&gt; &lt;/span&gt;--close&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"_ closing before merging."&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;update&lt;span class="w"&gt; &lt;/span&gt;-C&lt;span class="w"&gt; &lt;/span&gt;default
&lt;span class="m"&gt;33&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;updated,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;merged,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;removed,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;unresolved
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;merge&lt;span class="w"&gt; &lt;/span&gt;single-ifkit
&lt;span class="m"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;updated,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;merged,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;removed,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;files&lt;span class="w"&gt; &lt;/span&gt;unresolved
&lt;span class="o"&gt;(&lt;/span&gt;branch&lt;span class="w"&gt; &lt;/span&gt;merge,&lt;span class="w"&gt; &lt;/span&gt;don´t&lt;span class="w"&gt; &lt;/span&gt;forget&lt;span class="w"&gt; &lt;/span&gt;to&lt;span class="w"&gt; &lt;/span&gt;commit&lt;span class="o"&gt;)&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;ci&lt;span class="w"&gt; &lt;/span&gt;-m&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"|\ single-ifkit."&lt;/span&gt;
$&lt;span class="w"&gt; &lt;/span&gt;hg&lt;span class="w"&gt; &lt;/span&gt;heads
changeset:&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="m"&gt;110&lt;/span&gt;:bfc9eb117a76
tag:&lt;span class="w"&gt;         &lt;/span&gt;tip
parent:&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="m"&gt;108&lt;/span&gt;:d53b4b9a3ffc
parent:&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="m"&gt;109&lt;/span&gt;:b41570e653c9
user:&lt;span class="w"&gt;        &lt;/span&gt;Marcos&lt;span class="w"&gt; &lt;/span&gt;Dione&lt;span class="w"&gt; &lt;/span&gt;&amp;lt;mdione@sophia.inrira.fr&amp;gt;
date:&lt;span class="w"&gt;        &lt;/span&gt;Fri&lt;span class="w"&gt; &lt;/span&gt;Dec&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;17&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;11&lt;/span&gt;:34:26&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2010&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;+0100
summary:&lt;span class="w"&gt;     &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="se"&gt;\ &lt;/span&gt;single-ifkit.
&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Tadaaa! Yes, I would like a &lt;code&gt;hg merge --close &amp;lt;head&amp;gt;&lt;/code&gt; command that did all this
dance for me, but as I said, as I know the hoops I have to jump through, and as
long they're not in flames, I can live with it. The only thing I miss from other
VCS is Bazaar's &lt;code&gt;--show-diff&lt;/code&gt; commit option, which lets me review the diff while
editing the commit message.&lt;/p&gt;
&lt;p&gt;One thing that I figured out out of this: histories in Mercurial are acyclic
directed graphs, yes, but they don't need to have only one root. Nice.&lt;/p&gt;</description><category>mercurial</category><guid>https://www.grulic.org.ar/~mdione/glob/posts/merging-disjoint-histories-with-mercurial/</guid><pubDate>Fri, 17 Dec 2010 12:44:33 GMT</pubDate></item></channel></rss>