[Bug 3958] New: Regression in fncache long path handling causing repository corruption.
mercurial-bugs at selenic.com
mercurial-bugs at selenic.com
Tue Jun 11 09:46:13 CDT 2013
http://bz.selenic.com/show_bug.cgi?id=3958
Priority: urgent
Bug ID: 3958
CC: mercurial-devel at selenic.com
Assignee: bugzilla at selenic.com
Summary: Regression in fncache long path handling causing
repository corruption.
Severity: bug
Classification: Unclassified
OS: All
Reporter: platings at ccdc.cam.ac.uk
Hardware: All
Status: UNCONFIRMED
Version: 2.5
Component: Mercurial
Product: Mercurial
In Mercurial 2.4.2 a file with the path such as:
12345678901234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1234567890/1/2/3/4/5/6/7/8/9/0/1234567890
is added to the Mercurial store at:
.hg/store/dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/1/2/3/123456d09851d3f8073abca8cd33aa631f7911219c3fce.i
Mercurial 2.5 (and later versions) expect such a path to exist at:
.hg/store/dh/12345678/12345678/12345678/12345678/12345678/12345678/12345678/1/2/12345678d09851d3f8073abca8cd33aa631f7911219c3fce.i
Therefore after upgrading to Mercurial 2.5 or later, hg operations such as
merge can fail and hg verify reports errors beginning with "missing revlog!".
Worse, even after downgrading Mercurial to 2.4.2 the same operations fail
because merely running hg verify with 2.5 or later corrupts .hg/store/fncache.
I've identified the offending changeset as
http://selenic.com/hg/rev/8c019d2fd7c03f073f7b879ccb87f3e2891bce8a
It seems that the C hashencode function behaves slightly differently to the
Python _hashencode function.
I'll send a regression test patch mercurial-devel at selenic.com
--
You are receiving this mail because:
You are on the CC list for the bug.
More information about the Mercurial-devel
mailing list