problem for 0.6c

Matt Mackall mpm at selenic.com
Mon Aug 22 14:23:08 CDT 2005


[please forward this on to the Xen list so folks know what's up.]

On Mon, Aug 22, 2005 at 04:55:36PM +0100, James Bulpin wrote:
> I'm responsible for the xenbits.xensource.com Xen repository server 
> Xiaofeng Ling mentions in the post. We upgraded the server to 0.6c 
> yesterday. A number of people have reported problems with cloning using 
> 0.6b and 0.6c clients (0.5b seems to work fine). Trying it myself I see 
> the same error as the poster using either 0.6b or 0.6c as the client. 
> For now I've backed off the server to 0.6b.
> 
> Additionally I now see errors with hg verify that I've not seen before; 
> 0.6b does not show them, 0.6c does. This is the case for the current 
> repo and for historical filesystem level snapshots going back to the end 
> of June when we first converted to mercurial.
> 
> Are these two issues linked? I'm wondering is some historical problem in 
> our repository is triggering the clone failure.

Sorry about this, I overlooked this when I was writing the release
notes. It's been in tip for a couple weeks:

http://www.selenic.com/hg/?cmd=changeset;node=fbe964ae7325d1a0ee2d35682f33337b17eeec32

What's happening is:

> node 560d1497c659914905e046bade1c570e9b477396 in manifests not in 
> tools/examples/init.d/xend

This filename contains a directory ending with .d. If we were to add a
file called tools/examples/init to the repo, it would be stored as
.hg/tools/examples/init.[di] and collide with your directory.

To avoid this problem, we're now escaping such directory names by
adding .hg. So the above becomes tools/examples/init.d.hg/xend.

Unfortunately Mercurial doesn't automatically fix up stuff in the old
style - I naively expected that no one would yet have such directories,
ignoring the fairly common practice of naming directories of config
exploded config files that way. 

But dealing with it is pretty easy, you just need to rename the
problematic directories. Something like this should do the trick:

 find .hg -type d -name "*.[di]" -exec echo mv {} {}.hg ";"

Run this at the top of your working dir. Take out the 'echo' once
you've confirmed it's finding the right files.

Also note that 0.6c and 0.6b clients should be perfectly compatible
over the wire, so long as each side has the appropriate directory
naming.

But if you use 0.6c to pull into a repo created by 0.6b with changes
that touch files in an affected directory, you're likely to have
strange behavior.

-- 
Mathematics is the supreme nostalgia of our time.


More information about the Mercurial mailing list