verify: tolerate repeated slashes in a converted repo (
issue3665)
These slashes are a hangover from
issue3612, fixed in
e4da793998bf.
Although the bugfix in that commit is correct, the test it adds
does not replicate the conditions for the bug correctly.
--- a/mercurial/verify.py Wed Oct 17 15:37:25 2012 -0500
+++ b/mercurial/verify.py Mon Oct 22 18:05:40 2012 -0700
@@ -7,7 +7,7 @@
from node import nullid, short
from i18n import _
-import os
+import os, posixpath
import revlog, util, error
def verify(repo):
@@ -236,7 +236,12 @@
try:
storefiles.remove(ff)
except KeyError:
- err(lr, _("missing revlog!"), ff)
+ # under hg < 2.4, convert didn't sanitize paths properly,
+ # so a converted repo may contain repeated slashes
+ try:
+ storefiles.remove(posixpath.normpath(ff))
+ except KeyError:
+ err(lr, _("missing revlog!"), ff)
checklog(fl, f, lr)
seen = {}
--- a/tests/test-convert-filemap.t Wed Oct 17 15:37:25 2012 -0500
+++ b/tests/test-convert-filemap.t Mon Oct 22 18:05:40 2012 -0700
@@ -226,10 +226,13 @@
9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo
$ hg --cwd foo-copied.repo debugrename copied
copied renamed from foo:2ed2a3912a0b24502043eae84ee4b279c18b90dd
+
+ensure that the filemap contains duplicated slashes (issue3612)
+
$ cat > renames.fmap <<EOF
> include dir
> exclude dir/file2
- > rename dir dir2
+ > rename dir dir2//dir3
> include foo
> include copied
> rename foo foo2
@@ -255,12 +258,19 @@
|
o 1 "1: add bar quux; copy foo to copied" files: copied2
|
- o 0 "0: add foo baz dir/" files: dir2/file dir2/subdir/file3 foo2
+ o 0 "0: add foo baz dir/" files: dir2//dir3/file dir2//dir3/subdir/file3 foo2
+ $ hg -R renames.repo verify
+ checking changesets
+ checking manifests
+ crosschecking files in changesets and manifests
+ checking files
+ 4 files, 5 changesets, 7 total revisions
+
$ hg -R renames.repo manifest --debug
d43feacba7a4f1f2080dde4a4b985bd8a0236d46 644 copied2
- 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir2/file
- 5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir2/subdir/file3
+ 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir2//dir3/file
+ 5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir2//dir3/subdir/file3
9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo2
$ hg --cwd renames.repo debugrename copied2
copied2 renamed from foo2:2ed2a3912a0b24502043eae84ee4b279c18b90dd