[Adium-devl] Mercurial conversion status report

Peter Hosey boredzo at adiumx.com
Mon Oct 20 18:01:35 UTC 2008


I've pretty much given up on fixing hg convert to process our repo  
entirely in one run. It looks like it'll require substantial changes  
internally to make it not consume too much memory.

So I did a test conversion in multiple passes (it resumes each time),  
and got a working repo. Next, I decided to try a one-line commit to  
test.txt.

It took more than 46 seconds.

You can imagine my shock, and my worry that we wouldn't be able to use  
Mercurial after all.

Fortunately, it appears that this is only because Mac OS X doesn't  
make all the files available immediately (attempting to read them will  
block until they are). After a few minutes, commit finishes in under a  
second, as it should.

So, that problem is resolved.

The next thing we need to consider is Trac:

	http://trac.edgewall.org/wiki/TracMercurial

We will certainly use Mercurial 1.0.2 or later on the server, but the  
last version of the Mercurial plug-in for Trac that works with Trac  
0.10.x doesn't work with hg 1.0.x, according to that page. This is  
another reason to try again to upgrade to Trac 0.11.

Around the same time as that, we should see how much bandwidth (more  
precisely, how much time) it takes to clone a repo with full history  
from the web server. If it's untenably large, we may have to trim back  
to a much smaller repo, and keep the SVN repo for archival purposes.

In case you're wondering, the full history in Mercurial's format takes  
up 1.8 GiB on disk. (It'll use less bandwidth than that over the  
network, especially with compression.)

Currently, Adium does not build successfully from the converted repo  
because Mercurial does not version-control empty directories, and we  
have four. The failed build commands are:

         CpResource "build/Debug/Adium.app/Contents/Resources/en.lproj/ 
Shared Dock Icon Images" "Resources/en.lproj/Shared Dock Icon Images"
         CpResource "build/Debug/Adium.app/Contents/Resources/sl.lproj/ 
Shared Dock Icon Images" "Resources/sl.lproj/Shared Dock Icon Images"
         CpResource "build/Debug/Adium.app/Contents/Resources/fi.lproj/ 
Shared Dock Icon Images" "Resources/fi.lproj/Shared Dock Icon Images"
         CpResource "build/Debug/Adium.app/Contents/Resources/ 
en_GB.lproj/Shared Dock Icon Images" "Resources/en_GB.lproj/Shared  
Dock Icon Images"

I think we can solve this by storing in those directories symlinks to  
the un-localized images. Another solution would be to put a dummy file  
in each directory, so that Mercurial has a file to track.





More information about the devel mailing list