[PATCH 2 of 2] requires: write requires file on commit

Adrian Buehlmann adrian at cadifra.com
Tue May 5 01:15:26 CDT 2015

On 2015-05-05 01:12, Drew Gottlieb wrote:
> If I'm not mistaken, that rewrites the hashes of old commits as it
> clones them to manifestv2 format, correct?

Really? Why?

But I'm surprised you're asking this, since I am assuming you are the
manifestv2 expert...

I didn't try it myself, but as a mercurial-devel lurker, I just had a
look at


and got the impression that repositories having manifestv2 in requires
mean, that they may contain manifest revisions in the new version 2
format, right?

So, perhaps doing the well known, canonical, repository "conversion"

  hg --config experimental.manifestv2=1 clone --pull repoA repoB

should just leave repoB as it is (all manifest revisions in version 1),
but add the manifestv2 marker to the requires file in repoB, which in
turn would mean that the next commit in repoB would write a v2 manifest
revision, right?

> What we're seeking is a way
> to have a repository with manifestv1 to switch to using manifestv2 for
> future commits, without modifying old hashes.

I suspect this is what probably should (and perhaps already does) happen
with the command line I mentioned.

> On Mon, May 4, 2015 at 4:09 PM Adrian Buehlmann <adrian at cadifra.com
> <mailto:adrian at cadifra.com>> wrote:
>     On 2015-05-05 00:30, Drew Gottlieb wrote:
>     > From IRC it seems a possible way forward can be having a command like
>     > 'hg migrate' to handle migrations to new formats such as manifestv2 or
>     > treemanifests. If such a command were created, the requires write
>     could
>     > happen then. Obviously, whether and how we have such a command is a
>     > considerably larger discussion.
>     I assume you are aware of
>       hg --config experimental.manifestv2=1 clone --pull repoA repoB
>     See also http://mercurial.selenic.com/wiki/RequiresFile

More information about the Mercurial-devel mailing list