We’re trying to clone a Mercurial repository A where it references a subrepository B that’s moved hosts. We’d like to update .hgsub in A to point to the new location of B, but it’s a chicken and egg problem if we can’t hg clone A in the first place.
Does anyone know how to work around this?
First note that clone is init + pull + update and that subrepo cloning is part of the update step, not the pull step. This means that you can avoid clone failing simply by skipping the update step:
Now the problem is reduced to “how do I update to a revision with a problematic .hgsub/.hgsubstate file?” There are two possibilities here:
remap subrepos using the [subpaths] feature (see hg help subrepo and hg help config)
manual update and repair
A “manual update” can be done like this:
Now you can manually fix-up your subrepos and .hgsub and commit. Be sure to test your fix with a clone before pushing it.
Also, see this mailing list thread on the topic: http://markmail.org/thread/ktxd2rsm7avkexzr