I'm trying to convert my repository @ http://bitbucket.org/SallyCMS/trunk with the following filemap: include sally/core I'm using the following command line: $ hg convert --filemap=map.txt trunk trunk-core --traceback --debug -v and get the following error every time on the same commit: [.....] converting: 1880/3767 revisions (49.91%) 1885 Added tag v0.3.11 for changeset 948c0cefbf90 source: 6b4824ee5dee1260bf4b6b9332b3c25f9f8dda1a converting: 1881/3767 revisions (49.93%) 1884 Merge source: 251054337a25bc4695902f058ad6825c40af4b40 converting: 1882/3767 revisions (49.96%) 1883 Merge source: d8c231898a5dfcbb0e41131e30677c1f3e1d0888 converting: 1883/3767 revisions (49.99%) config/sallyStatic.yml getting files: config/sallyStatic.yml 1/1 (100.00%) filtering out empty revision repository tip rolled back to revision 53 (undo commit) 1882 cleaned up some stylings and html (mostly on content page) and started to implement content actions source: 20e9642c41e77cb0982b6ccd03004e0b6edaaaa0 converting: 1884/3767 revisions (50.01%) lib/sly/Service/Article.php getting files: lib/sly/Service/Article.php 1/1 (100.00%) transaction abort! rollback completed run hg sink post-conversion action run hg source post-conversion action Traceback (most recent call last): File "mercurial\dispatch.pyo", line 88, in _runcatch File "mercurial\dispatch.pyo", line 740, in _dispatch File "mercurial\dispatch.pyo", line 514, in runcommand File "mercurial\dispatch.pyo", line 830, in _runcommand File "mercurial\dispatch.pyo", line 801, in checkargs File "mercurial\dispatch.pyo", line 737, in <lambda> File "mercurial\util.pyo", line 471, in check File "hgext\convert\__init__.pyo", line 271, in convert File "hgext\convert\convcmd.pyo", line 469, in convert File "hgext\convert\convcmd.pyo", line 385, in convert File "hgext\convert\convcmd.pyo", line 353, in copy File "hgext\convert\hg.pyo", line 171, in putcommit File "mercurial\localrepo.pyo", line 1450, in commitctx File "mercurial\changelog.pyo", line 254, in add File "mercurial\revlog.pyo", line 976, in addrevision File "mercurial\revlog.pyo", line 1075, in _addrevision File "mercurial\revlog.pyo", line 1041, in builddelta File "mercurial\revlog.pyo", line 906, in revision File "mercurial\revlog.pyo", line 915, in _checkhash RevlogError: integrity check failed on 00changelog.i:54 abort: integrity check failed on 00changelog.i:54! It works perfectly when using "sally/backend" or "sally/frontend", but there seems to be some evil commit that's blocking the core to be extracted. When using no filemap at all, converting works. There is nothing fancy about my setup. Microsoft's MES is my anti-virus software, but is set to ignore everything on that partition. My Windows is x64, I'm using the hg 2.3.2 that's bundled with TortoiseHg. Let me know if you need more details.
Probably a duplicate of bug 3334. Also reported in http://selenic.com/pipermail/mercurial/2012-January/041617.html
Worked in 2.0, failed in 2.1.
Oops, I meant that 2.1 is good, 2.2 and above are bad. Bisected down to this commit: changeset: 16116:ce0ad184f489 branch: stable user: Idan Kamara <idankk86@gmail.com> date: Thu Feb 16 01:21:34 2012 +0200 summary: localrepo: clear _filecache on rollback (issue3261)
Fixing priority to match keyword. The priority of functional regressions is always 'urgent'. Mads apparently means bug 3335 (new numbering), which bisects it to: http://selenic.com/repo/hg/rev/d3ac759a6d66 That appeared in 2.0-rc, so Bryan's narrowing to 2.0::2.1 suggests this bug is different.
(In reply to comment #4) I corrected my mistake in comment #3 - this regressed in ce0ad184f489, just before 2.1.1 was released.
convert + filecache seems to really not get along, different issues come up every now and then. Perhaps we're better off disabling the filecache mechanism specifically for convert.
Fixed by http://selenic.com/repo/hg/rev/3e4a944c0d04 Idan Kamara <idankk86@gmail.com> destroyed: keep the filecache in sync with __dict__ (issue3335) (issue3693) (issue3743) We need to make sure that if X is in the filecache then it's also in the filecache owner's __dict__, otherwise it will go out of sync: repo.X # first access to X, records stat info in # filecache and updates __dict__ repo._filecache.clear() # removes X from _filecache but it's still in __dict__ repo.invalidate() # iterates over _filecache and removes entries # from __dict__, but X isn't in _filecache, so # it's kept in __dict__ repo.X # X is fetched from __dict__, bypassing the filecache (please test the fix)