output before: "500 files, 2035 changesets, 2622 total revisions"
output after: "checked 2035 changesets with 2622 changes to 500 files"
new one was suggested in the comments inside the issue.
durin42 | |
pulkit | |
martinvonz |
hg-reviewers |
output before: "500 files, 2035 changesets, 2622 total revisions"
output after: "checked 2035 changesets with 2622 changes to 500 files"
new one was suggested in the comments inside the issue.
Automatic diff as part of commit; lint not applicable. |
Automatic diff as part of commit; unit tests not applicable. |
This change looks good to me but I am not pushing it because I helped Meirambek to prepare the patch.
filenodes = self._verifymanifest(mflinkrevs) | filenodes = self._verifymanifest(mflinkrevs) | ||||
del mflinkrevs | del mflinkrevs | ||||
self._crosscheckfiles(filelinkrevs, filenodes) | self._crosscheckfiles(filelinkrevs, filenodes) | ||||
totalfiles, filerevisions = self._verifyfiles(filenodes, filelinkrevs) | totalfiles, filerevisions = self._verifyfiles(filenodes, filelinkrevs) | ||||
ui.status(_("%d files, %d changesets, %d total revisions\n") % | ui.status(_("checked %d changesets with %d changes to %d files\n") % | ||||
(totalfiles, len(repo.changelog), filerevisions)) | (len(repo.changelog), filerevisions, totalfiles)) | ||||
if self.warnings: | if self.warnings: | ||||
ui.warn(_("%d warnings encountered!\n") % self.warnings) | ui.warn(_("%d warnings encountered!\n") % self.warnings) | ||||
if self.fncachewarned: | if self.fncachewarned: | ||||
ui.warn(_('hint: run "hg debugrebuildfncache" to recover from ' | ui.warn(_('hint: run "hg debugrebuildfncache" to recover from ' | ||||
'corrupt fncache\n')) | 'corrupt fncache\n')) | ||||
if self.errors: | if self.errors: | ||||
ui.warn(_("%d integrity errors encountered!\n") % self.errors) | ui.warn(_("%d integrity errors encountered!\n") % self.errors) | ||||
if self.badrevs: | if self.badrevs: |
Verify should succeed: | Verify should succeed: | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
Repository root: | Repository root: | ||||
$ hg root | $ hg root | ||||
$TESTTMP/t | $TESTTMP/t | ||||
$ hg log -l1 -T '{reporoot}\n' | $ hg log -l1 -T '{reporoot}\n' | ||||
$TESTTMP/t | $TESTTMP/t | ||||
At the end... | At the end... | ||||
$ cd .. | $ cd .. |
adding file changes | adding file changes | ||||
added 1 changesets with 1 changes to 1 files | added 1 changesets with 1 changes to 1 files | ||||
new changesets bfaf4b5cbf01 (1 drafts) | new changesets bfaf4b5cbf01 (1 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
0:bfaf4b5cbf01 | 0:bfaf4b5cbf01 | ||||
searching for changes | searching for changes | ||||
2 changesets found | 2 changesets found | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 1 files | added 2 changesets with 2 changes to 1 files | ||||
new changesets bfaf4b5cbf01:21f32785131f (2 drafts) | new changesets bfaf4b5cbf01:21f32785131f (2 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
1:21f32785131f | 1:21f32785131f | ||||
searching for changes | searching for changes | ||||
3 changesets found | 3 changesets found | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 3 changesets with 3 changes to 1 files | added 3 changesets with 3 changes to 1 files | ||||
new changesets bfaf4b5cbf01:4ce51a113780 (3 drafts) | new changesets bfaf4b5cbf01:4ce51a113780 (3 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
2:4ce51a113780 | 2:4ce51a113780 | ||||
searching for changes | searching for changes | ||||
4 changesets found | 4 changesets found | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 4 changes to 1 files | added 4 changesets with 4 changes to 1 files | ||||
new changesets bfaf4b5cbf01:93ee6ab32777 (4 drafts) | new changesets bfaf4b5cbf01:93ee6ab32777 (4 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 4 changesets, 4 total revisions | checked 4 changesets with 4 changes to 1 files | ||||
3:93ee6ab32777 | 3:93ee6ab32777 | ||||
searching for changes | searching for changes | ||||
2 changesets found | 2 changesets found | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 1 files | added 2 changesets with 2 changes to 1 files | ||||
new changesets bfaf4b5cbf01:c70afb1ee985 (2 drafts) | new changesets bfaf4b5cbf01:c70afb1ee985 (2 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
1:c70afb1ee985 | 1:c70afb1ee985 | ||||
searching for changes | searching for changes | ||||
3 changesets found | 3 changesets found | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 3 changesets with 3 changes to 1 files | added 3 changesets with 3 changes to 1 files | ||||
new changesets bfaf4b5cbf01:f03ae5a9b979 (3 drafts) | new changesets bfaf4b5cbf01:f03ae5a9b979 (3 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
2:f03ae5a9b979 | 2:f03ae5a9b979 | ||||
searching for changes | searching for changes | ||||
4 changesets found | 4 changesets found | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 5 changes to 2 files | added 4 changesets with 5 changes to 2 files | ||||
new changesets bfaf4b5cbf01:095cb14b1b4d (4 drafts) | new changesets bfaf4b5cbf01:095cb14b1b4d (4 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 4 changesets, 5 total revisions | checked 4 changesets with 5 changes to 2 files | ||||
3:095cb14b1b4d | 3:095cb14b1b4d | ||||
searching for changes | searching for changes | ||||
5 changesets found | 5 changesets found | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 5 changesets with 6 changes to 3 files | added 5 changesets with 6 changes to 3 files | ||||
new changesets bfaf4b5cbf01:faa2e4234c7a (5 drafts) | new changesets bfaf4b5cbf01:faa2e4234c7a (5 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 5 changesets, 6 total revisions | checked 5 changesets with 6 changes to 3 files | ||||
4:faa2e4234c7a | 4:faa2e4234c7a | ||||
searching for changes | searching for changes | ||||
5 changesets found | 5 changesets found | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 5 changesets with 5 changes to 2 files | added 5 changesets with 5 changes to 2 files | ||||
new changesets bfaf4b5cbf01:916f1afdef90 (5 drafts) | new changesets bfaf4b5cbf01:916f1afdef90 (5 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 5 total revisions | checked 5 changesets with 5 changes to 2 files | ||||
4:916f1afdef90 | 4:916f1afdef90 | ||||
$ cd test-8 | $ cd test-8 | ||||
$ hg pull ../test-7 | $ hg pull ../test-7 | ||||
pulling from ../test-7 | pulling from ../test-7 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 2 changes to 3 files (+1 heads) | added 4 changesets with 2 changes to 3 files (+1 heads) | ||||
new changesets c70afb1ee985:faa2e4234c7a | new changesets c70afb1ee985:faa2e4234c7a | ||||
1 local changesets published | 1 local changesets published | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 9 changesets, 7 total revisions | checked 9 changesets with 7 changes to 4 files | ||||
$ hg rollback | $ hg rollback | ||||
repository tip rolled back to revision 4 (undo pull) | repository tip rolled back to revision 4 (undo pull) | ||||
$ cd .. | $ cd .. | ||||
should fail | should fail | ||||
$ hg -R test bundle --base 2 -r tip test-bundle-branch1.hg test-3 | $ hg -R test bundle --base 2 -r tip test-bundle-branch1.hg test-3 | ||||
abort: --base is incompatible with specifying a destination | abort: --base is incompatible with specifying a destination | ||||
$ hg tip -q | $ hg tip -q | ||||
8:916f1afdef90 | 8:916f1afdef90 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 9 changesets, 7 total revisions | checked 9 changesets with 7 changes to 4 files | ||||
$ hg rollback | $ hg rollback | ||||
repository tip rolled back to revision 2 (undo unbundle) | repository tip rolled back to revision 2 (undo unbundle) | ||||
revision 2 | revision 2 | ||||
$ hg tip -q | $ hg tip -q | ||||
2:4ce51a113780 | 2:4ce51a113780 | ||||
$ hg unbundle ../test-bundle-branch1.hg | $ hg unbundle ../test-bundle-branch1.hg | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 2 files | added 2 changesets with 2 changes to 2 files | ||||
new changesets 93ee6ab32777:916f1afdef90 (2 drafts) | new changesets 93ee6ab32777:916f1afdef90 (2 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
revision 4 | revision 4 | ||||
$ hg tip -q | $ hg tip -q | ||||
4:916f1afdef90 | 4:916f1afdef90 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 5 total revisions | checked 5 changesets with 5 changes to 2 files | ||||
$ hg rollback | $ hg rollback | ||||
repository tip rolled back to revision 2 (undo unbundle) | repository tip rolled back to revision 2 (undo unbundle) | ||||
$ hg unbundle ../test-bundle-branch2.hg | $ hg unbundle ../test-bundle-branch2.hg | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 3 changes to 3 files (+1 heads) | added 4 changesets with 3 changes to 3 files (+1 heads) | ||||
new changesets c70afb1ee985:faa2e4234c7a (4 drafts) | new changesets c70afb1ee985:faa2e4234c7a (4 drafts) | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
revision 6 | revision 6 | ||||
$ hg tip -q | $ hg tip -q | ||||
6:faa2e4234c7a | 6:faa2e4234c7a | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 7 changesets, 6 total revisions | checked 7 changesets with 6 changes to 3 files | ||||
$ hg rollback | $ hg rollback | ||||
repository tip rolled back to revision 2 (undo unbundle) | repository tip rolled back to revision 2 (undo unbundle) | ||||
$ hg unbundle ../test-bundle-cset-7.hg | $ hg unbundle ../test-bundle-cset-7.hg | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 2 files | added 2 changesets with 2 changes to 2 files | ||||
new changesets 93ee6ab32777:916f1afdef90 (2 drafts) | new changesets 93ee6ab32777:916f1afdef90 (2 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
revision 4 | revision 4 | ||||
$ hg tip -q | $ hg tip -q | ||||
4:916f1afdef90 | 4:916f1afdef90 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 5 total revisions | checked 5 changesets with 5 changes to 2 files | ||||
$ cd ../test | $ cd ../test | ||||
$ hg merge 7 | $ hg merge 7 | ||||
note: possible conflict - afile was renamed multiple times to: | note: possible conflict - afile was renamed multiple times to: | ||||
anotherfile | anotherfile | ||||
adifferentfile | adifferentfile | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | (branch merge, don't forget to commit) | ||||
$ hg tip -q | $ hg tip -q | ||||
9:03fc0b0e347c | 9:03fc0b0e347c | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 10 changesets, 7 total revisions | checked 10 changesets with 7 changes to 4 files | ||||
$ cd .. | $ cd .. |
1 files updated, 0 files merged, 2 files removed, 0 files unresolved | 1 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ hg mv afile anotherfile | $ hg mv afile anotherfile | ||||
$ hg commit -m "0.3m" | $ hg commit -m "0.3m" | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 9 changesets, 7 total revisions | checked 9 changesets with 7 changes to 4 files | ||||
$ cd .. | $ cd .. | ||||
$ hg init empty | $ hg init empty | ||||
Bundle and phase | Bundle and phase | ||||
$ hg -R test phase --force --secret 0 | $ hg -R test phase --force --secret 0 | ||||
$ hg -R test bundle phase.hg empty | $ hg -R test bundle phase.hg empty | ||||
searching for changes | searching for changes | ||||
$ hg -R empty heads | $ hg -R empty heads | ||||
[1] | [1] | ||||
$ hg -R empty verify | $ hg -R empty verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
0 files, 0 changesets, 0 total revisions | checked 0 changesets with 0 changes to 0 files | ||||
#if repobundlerepo | #if repobundlerepo | ||||
Pull full.hg into test (using --cwd) | Pull full.hg into test (using --cwd) | ||||
$ hg --cwd test pull ../full.hg | $ hg --cwd test pull ../full.hg | ||||
pulling from ../full.hg | pulling from ../full.hg | ||||
searching for changes | searching for changes | ||||
but, regular verify must continue to work | but, regular verify must continue to work | ||||
$ hg -R orig verify | $ hg -R orig verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
#if repobundlerepo | #if repobundlerepo | ||||
diff against bundle | diff against bundle | ||||
$ hg init b | $ hg init b | ||||
$ cd b | $ cd b | ||||
$ hg -R ../all.hg diff -r tip | $ hg -R ../all.hg diff -r tip | ||||
diff -r aa35859c02ea anotherfile | diff -r aa35859c02ea anotherfile | ||||
$ hg clone -q -r0 . part2 | $ hg clone -q -r0 . part2 | ||||
$ hg -q -R part2 pull bundle.hg | $ hg -q -R part2 pull bundle.hg | ||||
$ hg -R part2 verify | $ hg -R part2 verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 3 changesets, 5 total revisions | checked 3 changesets with 5 changes to 4 files | ||||
#endif | #endif | ||||
== Test bundling no commits | == Test bundling no commits | ||||
$ hg bundle -r 'public()' no-output.hg | $ hg bundle -r 'public()' no-output.hg | ||||
abort: no commits to bundle | abort: no commits to bundle | ||||
[255] | [255] | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
target@1: censored file data | target@1: censored file data | ||||
target@2: censored file data | target@2: censored file data | ||||
2 files, 5 changesets, 7 total revisions | checked 5 changesets with 7 changes to 2 files | ||||
2 integrity errors encountered! | 2 integrity errors encountered! | ||||
(first damaged changeset appears to be 1) | (first damaged changeset appears to be 1) | ||||
[1] | [1] | ||||
Cannot update to revision with censored data | Cannot update to revision with censored data | ||||
$ hg update -r $C2 | $ hg update -r $C2 | ||||
abort: censored node: 1e0247a9a4b7 | abort: censored node: 1e0247a9a4b7 | ||||
Repo passes verification with warnings with explicit config | Repo passes verification with warnings with explicit config | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 7 total revisions | checked 5 changesets with 7 changes to 2 files | ||||
May update to revision with censored data with explicit config | May update to revision with censored data with explicit config | ||||
$ hg update -r $C2 | $ hg update -r $C2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cat target | $ cat target | ||||
$ hg update -r $C1 | $ hg update -r $C1 | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg cat -r $C1 target | $ hg cat -r $C1 target | ||||
$ hg cat -r 0 target | $ hg cat -r 0 target | ||||
Initially untainted file | Initially untainted file | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 12 changesets, 13 total revisions | checked 12 changesets with 13 changes to 2 files | ||||
Repo cloned before tainted content introduced can pull censored nodes | Repo cloned before tainted content introduced can pull censored nodes | ||||
$ cd ../rpull | $ cd ../rpull | ||||
$ hg cat -r tip target | $ hg cat -r tip target | ||||
Initially untainted file | Initially untainted file | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 1 changesets, 2 total revisions | checked 1 changesets with 2 changes to 2 files | ||||
$ hg pull -r $H1 -r $H2 | $ hg pull -r $H1 -r $H2 | ||||
pulling from $TESTTMP/r | pulling from $TESTTMP/r | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 11 changesets with 11 changes to 2 files (+1 heads) | added 11 changesets with 11 changes to 2 files (+1 heads) | ||||
new changesets 186fb27560c3:683e4645fded | new changesets 186fb27560c3:683e4645fded | ||||
$ hg cat -r $C1 target | $ hg cat -r $C1 target | ||||
$ hg cat -r 0 target | $ hg cat -r 0 target | ||||
Initially untainted file | Initially untainted file | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 12 changesets, 13 total revisions | checked 12 changesets with 13 changes to 2 files | ||||
Censored nodes can be pushed if they censor previously unexchanged nodes | Censored nodes can be pushed if they censor previously unexchanged nodes | ||||
$ echo 'Passwords: hunter2hunter2' > target | $ echo 'Passwords: hunter2hunter2' > target | ||||
$ hg ci -m 're-add password from clone' target | $ hg ci -m 're-add password from clone' target | ||||
created new head | created new head | ||||
$ H3=`hg id --debug -i` | $ H3=`hg id --debug -i` | ||||
$ REV=$H3 | $ REV=$H3 | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cat target | $ cat target | ||||
Re-sanitized; nothing to see here | Re-sanitized; nothing to see here | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 14 changesets, 15 total revisions | checked 14 changesets with 15 changes to 2 files | ||||
Censored nodes can be imported on top of censored nodes, consecutively | Censored nodes can be imported on top of censored nodes, consecutively | ||||
$ hg init ../rimport | $ hg init ../rimport | ||||
$ hg bundle --base 1 ../rimport/splitbundle | $ hg bundle --base 1 ../rimport/splitbundle | ||||
12 changesets found | 12 changesets found | ||||
$ cd ../rimport | $ cd ../rimport | ||||
$ hg pull -r $H1 -r $H2 ../r | $ hg pull -r $H1 -r $H2 ../r | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cat target | $ cat target | ||||
Re-sanitized; nothing to see here | Re-sanitized; nothing to see here | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 14 changesets, 15 total revisions | checked 14 changesets with 15 changes to 2 files | ||||
$ cd ../r | $ cd ../r | ||||
Can import bundle where first revision of a file is censored | Can import bundle where first revision of a file is censored | ||||
$ hg init ../rinit | $ hg init ../rinit | ||||
$ hg censor -r 0 target | $ hg censor -r 0 target | ||||
$ hg bundle -r 0 --base null ../rinit/initbundle | $ hg bundle -r 0 --base null ../rinit/initbundle | ||||
1 changesets found | 1 changesets found |
see what happened | see what happened | ||||
$ wait | $ wait | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
$ cd .. | $ cd .. |
5 7 09bb521d218d de68e904d169 000000000000 | 5 7 09bb521d218d de68e904d169 000000000000 | ||||
6 8 1fde233dfb0f f54c32f13478 000000000000 | 6 8 1fde233dfb0f f54c32f13478 000000000000 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 9 changesets, 7 total revisions | checked 9 changesets with 7 changes to 4 files | ||||
$ cd .. | $ cd .. | ||||
$ for i in 0 1 2 3 4 5 6 7 8; do | $ for i in 0 1 2 3 4 5 6 7 8; do | ||||
> echo | > echo | ||||
> echo ---- hg clone -r "$i" test test-"$i" | > echo ---- hg clone -r "$i" test test-"$i" | ||||
> hg clone -r "$i" test test-"$i" | > hg clone -r "$i" test test-"$i" | ||||
> cd test-"$i" | > cd test-"$i" | ||||
> hg verify | > hg verify | ||||
> cd .. | > cd .. | ||||
> done | > done | ||||
---- hg clone -r 0 test test-0 | ---- hg clone -r 0 test test-0 | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 1 changesets with 1 changes to 1 files | added 1 changesets with 1 changes to 1 files | ||||
new changesets f9ee2f85a263 | new changesets f9ee2f85a263 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
---- hg clone -r 1 test test-1 | ---- hg clone -r 1 test test-1 | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 1 files | added 2 changesets with 2 changes to 1 files | ||||
new changesets f9ee2f85a263:34c2bf6b0626 | new changesets f9ee2f85a263:34c2bf6b0626 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
---- hg clone -r 2 test test-2 | ---- hg clone -r 2 test test-2 | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 3 changesets with 3 changes to 1 files | added 3 changesets with 3 changes to 1 files | ||||
new changesets f9ee2f85a263:e38ba6f5b7e0 | new changesets f9ee2f85a263:e38ba6f5b7e0 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
---- hg clone -r 3 test test-3 | ---- hg clone -r 3 test test-3 | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 4 changes to 1 files | added 4 changesets with 4 changes to 1 files | ||||
new changesets f9ee2f85a263:eebf5a27f8ca | new changesets f9ee2f85a263:eebf5a27f8ca | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 4 changesets, 4 total revisions | checked 4 changesets with 4 changes to 1 files | ||||
---- hg clone -r 4 test test-4 | ---- hg clone -r 4 test test-4 | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 1 files | added 2 changesets with 2 changes to 1 files | ||||
new changesets f9ee2f85a263:095197eb4973 | new changesets f9ee2f85a263:095197eb4973 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
---- hg clone -r 5 test test-5 | ---- hg clone -r 5 test test-5 | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 3 changesets with 3 changes to 1 files | added 3 changesets with 3 changes to 1 files | ||||
new changesets f9ee2f85a263:1bb50a9436a7 | new changesets f9ee2f85a263:1bb50a9436a7 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
---- hg clone -r 6 test test-6 | ---- hg clone -r 6 test test-6 | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 5 changes to 2 files | added 4 changesets with 5 changes to 2 files | ||||
new changesets f9ee2f85a263:7373c1169842 | new changesets f9ee2f85a263:7373c1169842 | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 4 changesets, 5 total revisions | checked 4 changesets with 5 changes to 2 files | ||||
---- hg clone -r 7 test test-7 | ---- hg clone -r 7 test test-7 | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 5 changesets with 6 changes to 3 files | added 5 changesets with 6 changes to 3 files | ||||
new changesets f9ee2f85a263:a6a34bfa0076 | new changesets f9ee2f85a263:a6a34bfa0076 | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 5 changesets, 6 total revisions | checked 5 changesets with 6 changes to 3 files | ||||
---- hg clone -r 8 test test-8 | ---- hg clone -r 8 test test-8 | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 5 changesets with 5 changes to 2 files | added 5 changesets with 5 changes to 2 files | ||||
new changesets f9ee2f85a263:aa35859c02ea | new changesets f9ee2f85a263:aa35859c02ea | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 5 total revisions | checked 5 changesets with 5 changes to 2 files | ||||
$ cd test-8 | $ cd test-8 | ||||
$ hg pull ../test-7 | $ hg pull ../test-7 | ||||
pulling from ../test-7 | pulling from ../test-7 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 2 changes to 3 files (+1 heads) | added 4 changesets with 2 changes to 3 files (+1 heads) | ||||
new changesets 095197eb4973:a6a34bfa0076 | new changesets 095197eb4973:a6a34bfa0076 | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 9 changesets, 7 total revisions | checked 9 changesets with 7 changes to 4 files | ||||
$ cd .. | $ cd .. | ||||
$ hg clone test test-9 | $ hg clone test test-9 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd test-9 | $ cd test-9 | ||||
$ hg branch foobar | $ hg branch foobar | ||||
marked working directory as branch foobar | marked working directory as branch foobar |
$ cat a | $ cat a | ||||
a | a | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 11 changesets, 11 total revisions | checked 11 changesets with 11 changes to 2 files | ||||
Invalid dest '' must abort: | Invalid dest '' must abort: | ||||
$ hg clone . '' | $ hg clone . '' | ||||
abort: empty destination path is not valid | abort: empty destination path is not valid | ||||
[255] | [255] | ||||
No update, with debug option: | No update, with debug option: | ||||
$ cat a 2>/dev/null || echo "a not present" | $ cat a 2>/dev/null || echo "a not present" | ||||
a not present | a not present | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 11 changesets, 11 total revisions | checked 11 changesets with 11 changes to 2 files | ||||
Default destination: | Default destination: | ||||
$ mkdir ../d | $ mkdir ../d | ||||
$ cd ../d | $ cd ../d | ||||
$ hg clone ../a | $ hg clone ../a | ||||
destination directory: a | destination directory: a | ||||
updating to branch default | updating to branch default | ||||
new changesets acb14030fe0a:a7949464abda | new changesets acb14030fe0a:a7949464abda | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg -R g verify | $ hg -R g verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 11 changesets, 11 total revisions | checked 11 changesets with 11 changes to 2 files | ||||
Invalid dest '' with --pull must abort (issue2528): | Invalid dest '' with --pull must abort (issue2528): | ||||
$ hg clone --pull a '' | $ hg clone --pull a '' | ||||
abort: empty destination path is not valid | abort: empty destination path is not valid | ||||
[255] | [255] | ||||
Clone to '.': | Clone to '.': |
rollback completed | rollback completed | ||||
abort: pretxncommit hook exited with status 1 | abort: pretxncommit hook exited with status 1 | ||||
[255] | [255] | ||||
*** runcommand verify | *** runcommand verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
$ hg revert --no-backup -aq | $ hg revert --no-backup -aq | ||||
$ cat >> .hg/hgrc << EOF | $ cat >> .hg/hgrc << EOF | ||||
> [experimental] | > [experimental] | ||||
> evolution.createmarkers=True | > evolution.createmarkers=True | ||||
> EOF | > EOF | ||||
>>> import os | >>> import os |
$ echo adding more to file a >> a | $ echo adding more to file a >> a | ||||
$ hg commit -m third | $ hg commit -m third | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
Dumping revlog of file a to stdout: | Dumping revlog of file a to stdout: | ||||
$ $PYTHON "$CONTRIBDIR/dumprevlog" .hg/store/data/a.i | $ $PYTHON "$CONTRIBDIR/dumprevlog" .hg/store/data/a.i | ||||
file: .hg/store/data/a.i | file: .hg/store/data/a.i | ||||
node: 183d2312b35066fb6b3b449b84efc370d50993d0 | node: 183d2312b35066fb6b3b449b84efc370d50993d0 | ||||
linkrev: 0 | linkrev: 0 | ||||
parents: 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 | parents: 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 | ||||
length: 15 | length: 15 | ||||
Verify: | Verify: | ||||
$ hg -R repo-c verify | $ hg -R repo-c verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
Compare repos: | Compare repos: | ||||
$ hg -R repo-c incoming repo-a | $ hg -R repo-c incoming repo-a | ||||
comparing with repo-a | comparing with repo-a | ||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
[1] | [1] | ||||
$ hg -R repo-a incoming repo-c | $ hg -R repo-a incoming repo-c | ||||
comparing with repo-c | comparing with repo-c | ||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
[1] | [1] |
| | | | ||||
o 0 "0: add foo baz dir/" files: dir2/dir3/file dir2/dir3/subdir/file3 foo2 | o 0 "0: add foo baz dir/" files: dir2/dir3/file dir2/dir3/subdir/file3 foo2 | ||||
$ hg -R renames.repo verify | $ hg -R renames.repo verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 5 changesets, 7 total revisions | checked 5 changesets with 7 changes to 4 files | ||||
$ hg -R renames.repo manifest --debug | $ hg -R renames.repo manifest --debug | ||||
d43feacba7a4f1f2080dde4a4b985bd8a0236d46 644 copied2 | d43feacba7a4f1f2080dde4a4b985bd8a0236d46 644 copied2 | ||||
3e20847584beff41d7cd16136b7331ab3d754be0 644 dir2/dir3/file | 3e20847584beff41d7cd16136b7331ab3d754be0 644 dir2/dir3/file | ||||
5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir2/dir3/subdir/file3 | 5fe139720576e18e34bcc9f79174db8897c8afe9 644 dir2/dir3/subdir/file3 | ||||
9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo2 | 9a7b52012991e4873687192c3e17e61ba3e837a3 644 foo2 | ||||
$ hg --cwd renames.repo debugrename copied2 | $ hg --cwd renames.repo debugrename copied2 | ||||
copied2 renamed from foo2:2ed2a3912a0b24502043eae84ee4b279c18b90dd | copied2 renamed from foo2:2ed2a3912a0b24502043eae84ee4b279c18b90dd |
2 changebagain | 2 changebagain | ||||
1 merge | 1 merge | ||||
0 moveb | 0 moveb | ||||
$ hg -R fixed verify | $ hg -R fixed verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 5 changesets, 5 total revisions | checked 5 changesets with 5 changes to 3 files | ||||
manifest -r 0 | manifest -r 0 | ||||
$ hg -R fixed manifest -r 0 | $ hg -R fixed manifest -r 0 | ||||
a | a | ||||
manifest -r tip | manifest -r tip | ||||
$ hg -R fixed manifest -r tip | $ hg -R fixed manifest -r tip | ||||
a | a | ||||
c | c | ||||
d | d |
$ hg cat a > asum | $ hg cat a > asum | ||||
$ md5sum.py asum | $ md5sum.py asum | ||||
60b725f10c9c85c70d97880dfe8191b3 asum | 60b725f10c9c85c70d97880dfe8191b3 asum | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
$ cd .. | $ cd .. | ||||
$ mkdir part2 | $ mkdir part2 | ||||
$ cd part2 | $ cd part2 | ||||
$ hg init | $ hg init |
Create an empty repo: | Create an empty repo: | ||||
$ hg init a | $ hg init a | ||||
$ cd a | $ cd a | ||||
Try some commands: | Try some commands: | ||||
$ hg log | $ hg log | ||||
$ hg grep wah | $ hg grep wah | ||||
[1] | [1] | ||||
$ hg manifest | $ hg manifest | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
0 files, 0 changesets, 0 total revisions | checked 0 changesets with 0 changes to 0 files | ||||
Check the basic files created: | Check the basic files created: | ||||
$ ls .hg | $ ls .hg | ||||
00changelog.i | 00changelog.i | ||||
requires | requires | ||||
store | store | ||||
Should be empty: | Should be empty: | ||||
$ ls .hg/store | $ ls .hg/store | ||||
Poke at a clone: | Poke at a clone: | ||||
$ cd .. | $ cd .. | ||||
$ hg clone a b | $ hg clone a b | ||||
updating to branch default | updating to branch default | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd b | $ cd b | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
0 files, 0 changesets, 0 total revisions | checked 0 changesets with 0 changes to 0 files | ||||
$ ls .hg | $ ls .hg | ||||
00changelog.i | 00changelog.i | ||||
hgrc | hgrc | ||||
requires | requires | ||||
store | store | ||||
Should be empty: | Should be empty: | ||||
$ ls .hg/store | $ ls .hg/store | ||||
$ cd .. | $ cd .. |
0 0 2ed2a3912a0b 000000000000 000000000000 | 0 0 2ed2a3912a0b 000000000000 000000000000 | ||||
1 1 79d7492df40a 2ed2a3912a0b 000000000000 | 1 1 79d7492df40a 2ed2a3912a0b 000000000000 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 4 total revisions | checked 5 changesets with 4 changes to 2 files |
$ hg status | $ hg status | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 4 changesets, 10 total revisions | checked 4 changesets with 10 changes to 4 files | ||||
$ cd .. | $ cd .. |
Testing verify: | Testing verify: | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 3 files | ||||
$ rm .hg/store/fncache | $ rm .hg/store/fncache | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
warning: revlog 'data/a.i' not in fncache! | warning: revlog 'data/a.i' not in fncache! | ||||
warning: revlog 'data/a.i.hg/c.i' not in fncache! | warning: revlog 'data/a.i.hg/c.i' not in fncache! | ||||
warning: revlog 'data/a.i/b.i' not in fncache! | warning: revlog 'data/a.i/b.i' not in fncache! | ||||
3 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 3 files | ||||
3 warnings encountered! | 3 warnings encountered! | ||||
hint: run "hg debugrebuildfncache" to recover from corrupt fncache | hint: run "hg debugrebuildfncache" to recover from corrupt fncache | ||||
Follow the hint to make sure it works | Follow the hint to make sure it works | ||||
$ hg debugrebuildfncache | $ hg debugrebuildfncache | ||||
adding data/a.i | adding data/a.i | ||||
adding data/a.i.hg/c.i | adding data/a.i.hg/c.i | ||||
adding data/a.i/b.i | adding data/a.i/b.i | ||||
3 items added, 0 removed from fncache | 3 items added, 0 removed from fncache | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 3 files | ||||
$ cd .. | $ cd .. | ||||
Non store repo: | Non store repo: | ||||
$ hg --config format.usestore=False init foo | $ hg --config format.usestore=False init foo | ||||
$ cd foo | $ cd foo | ||||
$ mkdir tst.d | $ mkdir tst.d | ||||
data/y.i | data/y.i | ||||
data/z.i | data/z.i | ||||
$ hg recover | $ hg recover | ||||
rolling back interrupted transaction | rolling back interrupted transaction | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ cat .hg/store/fncache | $ cat .hg/store/fncache | ||||
data/y.i | data/y.i | ||||
$ cd .. | $ cd .. | ||||
debugrebuildfncache does nothing unless repo has fncache requirement | debugrebuildfncache does nothing unless repo has fncache requirement | ||||
$ hg --config format.usefncache=false init nofncache | $ hg --config format.usefncache=false init nofncache |
Push to repo r1 should break up most hardlinks in r2: | Push to repo r1 should break up most hardlinks in r2: | ||||
$ hg -R r2 verify | $ hg -R r2 verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
$ cd r3 | $ cd r3 | ||||
$ hg push | $ hg push | ||||
pushing to $TESTTMP/r1 | pushing to $TESTTMP/r1 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
2 r2/.hg/store/fncache | 2 r2/.hg/store/fncache | ||||
#endif | #endif | ||||
$ hg -R r2 verify | $ hg -R r2 verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
$ cd r1 | $ cd r1 | ||||
$ hg up | $ hg up | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
Committing a change to f1 in r1 must break up hardlink f1.i in r2: | Committing a change to f1 in r1 must break up hardlink f1.i in r2: | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg verify -R copy | $ hg verify -R copy | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 1 changesets, 4 total revisions | checked 1 changesets with 4 changes to 4 files | ||||
#endif | #endif | ||||
try to clone via stream, should use pull instead | try to clone via stream, should use pull instead | ||||
$ hg clone --stream http://localhost:$HGPORT1/ copy2 | $ hg clone --stream http://localhost:$HGPORT1/ copy2 | ||||
warning: stream clone requested but server has them disabled | warning: stream clone requested but server has them disabled | ||||
requesting all changes | requesting all changes | ||||
adding changesets | adding changesets | ||||
new changesets 8b6053c928fe | new changesets 8b6053c928fe | ||||
updating to branch default | updating to branch default | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg verify -R copy-pull | $ hg verify -R copy-pull | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 1 changesets, 4 total revisions | checked 1 changesets with 4 changes to 4 files | ||||
$ cd test | $ cd test | ||||
$ echo bar > bar | $ echo bar > bar | ||||
$ hg commit -A -d '1 0' -m 2 | $ hg commit -A -d '1 0' -m 2 | ||||
adding bar | adding bar | ||||
$ cd .. | $ cd .. | ||||
clone over http with --update | clone over http with --update | ||||
added 1 changesets with 1 changes to 1 files | added 1 changesets with 1 changes to 1 files | ||||
new changesets bfaf4b5cbf01 | new changesets bfaf4b5cbf01 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 1 files | added 2 changesets with 2 changes to 1 files | ||||
new changesets bfaf4b5cbf01:21f32785131f | new changesets bfaf4b5cbf01:21f32785131f | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 3 changesets with 3 changes to 1 files | added 3 changesets with 3 changes to 1 files | ||||
new changesets bfaf4b5cbf01:4ce51a113780 | new changesets bfaf4b5cbf01:4ce51a113780 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 4 changes to 1 files | added 4 changesets with 4 changes to 1 files | ||||
new changesets bfaf4b5cbf01:93ee6ab32777 | new changesets bfaf4b5cbf01:93ee6ab32777 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 4 changesets, 4 total revisions | checked 4 changesets with 4 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 1 files | added 2 changesets with 2 changes to 1 files | ||||
new changesets bfaf4b5cbf01:c70afb1ee985 | new changesets bfaf4b5cbf01:c70afb1ee985 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 3 changesets with 3 changes to 1 files | added 3 changesets with 3 changes to 1 files | ||||
new changesets bfaf4b5cbf01:f03ae5a9b979 | new changesets bfaf4b5cbf01:f03ae5a9b979 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 5 changes to 2 files | added 4 changesets with 5 changes to 2 files | ||||
new changesets bfaf4b5cbf01:095cb14b1b4d | new changesets bfaf4b5cbf01:095cb14b1b4d | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 4 changesets, 5 total revisions | checked 4 changesets with 5 changes to 2 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 5 changesets with 6 changes to 3 files | added 5 changesets with 6 changes to 3 files | ||||
new changesets bfaf4b5cbf01:faa2e4234c7a | new changesets bfaf4b5cbf01:faa2e4234c7a | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 5 changesets, 6 total revisions | checked 5 changesets with 6 changes to 3 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 5 changesets with 5 changes to 2 files | added 5 changesets with 5 changes to 2 files | ||||
new changesets bfaf4b5cbf01:916f1afdef90 | new changesets bfaf4b5cbf01:916f1afdef90 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 5 total revisions | checked 5 changesets with 5 changes to 2 files | ||||
$ cd test-8 | $ cd test-8 | ||||
$ hg pull ../test-7 | $ hg pull ../test-7 | ||||
pulling from ../test-7 | pulling from ../test-7 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 2 changes to 3 files (+1 heads) | added 4 changesets with 2 changes to 3 files (+1 heads) | ||||
new changesets c70afb1ee985:faa2e4234c7a | new changesets c70afb1ee985:faa2e4234c7a | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 9 changesets, 7 total revisions | checked 9 changesets with 7 changes to 4 files | ||||
$ cd .. | $ cd .. | ||||
$ cd test-1 | $ cd test-1 | ||||
$ hg pull -r 4 http://localhost:$HGPORT/ | $ hg pull -r 4 http://localhost:$HGPORT/ | ||||
pulling from http://localhost:$HGPORT/ | pulling from http://localhost:$HGPORT/ | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 1 changesets with 0 changes to 0 files (+1 heads) | added 1 changesets with 0 changes to 0 files (+1 heads) | ||||
new changesets c70afb1ee985 | new changesets c70afb1ee985 | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 2 total revisions | checked 3 changesets with 2 changes to 1 files | ||||
$ hg pull http://localhost:$HGPORT/ | $ hg pull http://localhost:$HGPORT/ | ||||
pulling from http://localhost:$HGPORT/ | pulling from http://localhost:$HGPORT/ | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 6 changesets with 5 changes to 4 files | added 6 changesets with 5 changes to 4 files | ||||
new changesets 4ce51a113780:916f1afdef90 | new changesets 4ce51a113780:916f1afdef90 | ||||
added 2 changesets with 0 changes to 0 files (+1 heads) | added 2 changesets with 0 changes to 0 files (+1 heads) | ||||
new changesets c70afb1ee985:f03ae5a9b979 | new changesets c70afb1ee985:f03ae5a9b979 | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 5 changesets, 3 total revisions | checked 5 changesets with 3 changes to 1 files | ||||
$ hg pull http://localhost:$HGPORT/ | $ hg pull http://localhost:$HGPORT/ | ||||
pulling from http://localhost:$HGPORT/ | pulling from http://localhost:$HGPORT/ | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 4 changes to 4 files | added 4 changesets with 4 changes to 4 files | ||||
new changesets 93ee6ab32777:916f1afdef90 | new changesets 93ee6ab32777:916f1afdef90 | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 9 changesets, 7 total revisions | checked 9 changesets with 7 changes to 4 files | ||||
$ cd .. | $ cd .. | ||||
no default destination if url has no path: | no default destination if url has no path: | ||||
$ hg clone http://localhost:$HGPORT/ | $ hg clone http://localhost:$HGPORT/ | ||||
abort: empty destination path is not valid | abort: empty destination path is not valid | ||||
[255] | [255] | ||||
$ cat error.log | $ cat error.log |
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd b | $ cd b | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ cd .. | $ cd .. | ||||
url for proxy, pull | url for proxy, pull | ||||
$ http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone http://localhost:$HGPORT/ b-pull | $ http_proxy=http://localhost:$HGPORT1/ hg --config http_proxy.always=True clone http://localhost:$HGPORT/ b-pull | ||||
requesting all changes | requesting all changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 1 changesets with 1 changes to 1 files | added 1 changesets with 1 changes to 1 files | ||||
new changesets 83180e7845de | new changesets 83180e7845de | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd b-pull | $ cd b-pull | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ cd .. | $ cd .. | ||||
host:port for proxy | host:port for proxy | ||||
$ http_proxy=localhost:$HGPORT1 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ c | $ http_proxy=localhost:$HGPORT1 hg clone --config http_proxy.always=True http://localhost:$HGPORT/ c | ||||
requesting all changes | requesting all changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests |
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg verify -R copy | $ hg verify -R copy | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 1 changesets, 4 total revisions | checked 1 changesets with 4 changes to 4 files | ||||
#endif | #endif | ||||
try to clone via stream, should use pull instead | try to clone via stream, should use pull instead | ||||
$ hg clone --stream http://localhost:$HGPORT1/ copy2 | $ hg clone --stream http://localhost:$HGPORT1/ copy2 | ||||
warning: stream clone requested but server has them disabled | warning: stream clone requested but server has them disabled | ||||
requesting all changes | requesting all changes | ||||
adding changesets | adding changesets | ||||
new changesets 8b6053c928fe | new changesets 8b6053c928fe | ||||
updating to branch default | updating to branch default | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg verify -R copy-pull | $ hg verify -R copy-pull | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 1 changesets, 4 total revisions | checked 1 changesets with 4 changes to 4 files | ||||
$ cd test | $ cd test | ||||
$ echo bar > bar | $ echo bar > bar | ||||
$ hg commit -A -d '1 0' -m 2 | $ hg commit -A -d '1 0' -m 2 | ||||
adding bar | adding bar | ||||
$ cd .. | $ cd .. | ||||
clone over http with --update | clone over http with --update | ||||
new changesets 8b6053c928fe | new changesets 8b6053c928fe | ||||
updating to branch default | updating to branch default | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg verify -R copy-pull | $ hg verify -R copy-pull | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 1 changesets, 4 total revisions | checked 1 changesets with 4 changes to 4 files | ||||
$ cd test | $ cd test | ||||
$ echo bar > bar | $ echo bar > bar | ||||
$ hg commit -A -d '1 0' -m 2 | $ hg commit -A -d '1 0' -m 2 | ||||
adding bar | adding bar | ||||
$ cd .. | $ cd .. | ||||
pull without cacert | pull without cacert | ||||
rollback completed | rollback completed | ||||
abort: patch is damaged or loses information | abort: patch is damaged or loses information | ||||
[255] | [255] | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files |
#require serve | #require serve | ||||
$ hg init test | $ hg init test | ||||
$ cd test | $ cd test | ||||
$ for i in 0 1 2 3 4 5 6 7 8; do | $ for i in 0 1 2 3 4 5 6 7 8; do | ||||
> echo $i >> foo | > echo $i >> foo | ||||
> hg commit -A -m $i | > hg commit -A -m $i | ||||
> done | > done | ||||
adding foo | adding foo | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 9 changesets, 9 total revisions | checked 9 changesets with 9 changes to 1 files | ||||
$ hg serve -p $HGPORT -d --pid-file=hg.pid | $ hg serve -p $HGPORT -d --pid-file=hg.pid | ||||
$ cat hg.pid >> $DAEMON_PIDS | $ cat hg.pid >> $DAEMON_PIDS | ||||
$ cd .. | $ cd .. | ||||
$ hg init new | $ hg init new | ||||
http incoming | http incoming | ||||
> echo $i >> foo | > echo $i >> foo | ||||
> hg commit -A -m $i | > hg commit -A -m $i | ||||
> done | > done | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 14 changesets, 14 total revisions | checked 14 changesets with 14 changes to 1 files | ||||
$ cd .. | $ cd .. | ||||
$ hg -R test-dev outgoing test | $ hg -R test-dev outgoing test | ||||
comparing with test | comparing with test | ||||
searching for changes | searching for changes | ||||
changeset: 9:d89d4abea5bc | changeset: 9:d89d4abea5bc | ||||
user: test | user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: 9 | summary: 9 |
updating the branch cache | updating the branch cache | ||||
committed changeset 5:83a687e8a97c80992ba385bbfd766be181bfb1d1 | committed changeset 5:83a687e8a97c80992ba385bbfd766be181bfb1d1 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 6 changesets, 4 total revisions | checked 6 changesets with 4 changes to 4 files | ||||
$ hg export --git tip | $ hg export --git tip | ||||
# HG changeset patch | # HG changeset patch | ||||
# User test | # User test | ||||
# Date 0 0 | # Date 0 0 | ||||
# Thu Jan 01 00:00:00 1970 +0000 | # Thu Jan 01 00:00:00 1970 +0000 | ||||
# Node ID 83a687e8a97c80992ba385bbfd766be181bfb1d1 | # Node ID 83a687e8a97c80992ba385bbfd766be181bfb1d1 | ||||
# Parent 1d1625283f71954f21d14c3d44d0ad3c019c597f | # Parent 1d1625283f71954f21d14c3d44d0ad3c019c597f |
[255] | [255] | ||||
$ hg recover | $ hg recover | ||||
rolling back interrupted transaction | rolling back interrupted transaction | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
Check that zero-size journals are correctly aborted: | Check that zero-size journals are correctly aborted: | ||||
#if unix-permissions no-root | #if unix-permissions no-root | ||||
$ hg bundle -qa repo.hg | $ hg bundle -qa repo.hg | ||||
$ chmod -w foo/.hg/store/00changelog.i | $ chmod -w foo/.hg/store/00changelog.i | ||||
$ hg -R foo unbundle repo.hg | $ hg -R foo unbundle repo.hg | ||||
adding changesets | adding changesets | ||||
abort: Permission denied: $TESTTMP/foo/.hg/store/.00changelog.i-* (glob) | abort: Permission denied: $TESTTMP/foo/.hg/store/.00changelog.i-* (glob) | ||||
[255] | [255] | ||||
$ if test -f foo/.hg/store/journal; then echo 'journal exists :-('; fi | $ if test -f foo/.hg/store/journal; then echo 'journal exists :-('; fi | ||||
#endif | #endif | ||||
$ hg status | $ hg status | ||||
? c | ? c | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 3 changesets, 4 total revisions | checked 3 changesets with 4 changes to 3 files | ||||
$ cat a b | $ cat a b | ||||
expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | ||||
do not process $Id: | do not process $Id: | ||||
xxx $ | xxx $ | ||||
$Xinfo: User Name <user@example.com>: firstline $ | $Xinfo: User Name <user@example.com>: firstline $ | ||||
ignore $Id$ | ignore $Id$ | ||||
$ hg cat sym a b && echo | $ hg cat sym a b && echo | ||||
expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ | expand $Id: a bb948857c743 Thu, 01 Jan 1970 00:00:02 +0000 user $ |
$ hg commit -m "m2" | $ hg commit -m "m2" | ||||
Invoking status precommit hook | Invoking status precommit hook | ||||
A f2 | A f2 | ||||
$ hg verify --large | $ hg verify --large | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
searching 1 changesets for largefiles | searching 1 changesets for largefiles | ||||
verified existence of 1 revisions of 1 largefiles | verified existence of 1 revisions of 1 largefiles | ||||
$ hg serve --config extensions.largefiles=! -R ../r6 -d -p $HGPORT --pid-file ../hg.pid | $ hg serve --config extensions.largefiles=! -R ../r6 -d -p $HGPORT --pid-file ../hg.pid | ||||
$ cat ../hg.pid >> $DAEMON_PIDS | $ cat ../hg.pid >> $DAEMON_PIDS | ||||
$ hg push http://localhost:$HGPORT | $ hg push http://localhost:$HGPORT | ||||
pushing to http://localhost:$HGPORT/ | pushing to http://localhost:$HGPORT/ | ||||
searching for changes | searching for changes | ||||
abort: http://localhost:$HGPORT/ does not appear to be a largefile store | abort: http://localhost:$HGPORT/ does not appear to be a largefile store | ||||
$ rm "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90 | $ rm "${USERCACHE}"/02a439e5c31c526465ab1a0ca1f431f76b827b90 | ||||
$ mv empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 . | $ mv empty/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 . | ||||
$ hg -R http-clone verify --large --lfa | $ hg -R http-clone verify --large --lfa | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
searching 1 changesets for largefiles | searching 1 changesets for largefiles | ||||
changeset 0:cf03e5bb9936: f1 missing | changeset 0:cf03e5bb9936: f1 missing | ||||
verified existence of 1 revisions of 1 largefiles | verified existence of 1 revisions of 1 largefiles | ||||
[1] | [1] | ||||
$ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/ | $ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/ | ||||
$ hg -R http-clone -q verify --large --lfa | $ hg -R http-clone -q verify --large --lfa | ||||
largefiles pulled on update - a largefile missing on the server: | largefiles pulled on update - a largefile missing on the server: | ||||
$ [ ! -f http-clone/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 ] | $ [ ! -f http-clone/.hg/largefiles/02a439e5c31c526465ab1a0ca1f431f76b827b90 ] | ||||
$ [ ! -f http-clone/f1 ] | $ [ ! -f http-clone/f1 ] | ||||
$ [ ! -f http-clone-usercache ] | $ [ ! -f http-clone-usercache ] | ||||
$ hg -R http-clone verify --large --lfc | $ hg -R http-clone verify --large --lfc | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
searching 1 changesets for largefiles | searching 1 changesets for largefiles | ||||
verified contents of 1 revisions of 1 largefiles | verified contents of 1 revisions of 1 largefiles | ||||
$ hg -R http-clone up -Cqr null | $ hg -R http-clone up -Cqr null | ||||
largefiles pulled on update - no server side problems: | largefiles pulled on update - no server side problems: | ||||
$ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/ | $ mv 02a439e5c31c526465ab1a0ca1f431f76b827b90 empty/.hg/largefiles/ | ||||
$ hg -R http-clone --debug up --config largefiles.usercache=http-clone-usercache --config progress.debug=true | $ hg -R http-clone --debug up --config largefiles.usercache=http-clone-usercache --config progress.debug=true | ||||
resolving manifests | resolving manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 2 files | added 2 changesets with 2 changes to 2 files | ||||
new changesets 567253b0f523:04d19c27a332 (2 drafts) | new changesets 567253b0f523:04d19c27a332 (2 drafts) | ||||
$ hg -R batchverifyclone verify --large --lfa | $ hg -R batchverifyclone verify --large --lfa | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
searching 2 changesets for largefiles | searching 2 changesets for largefiles | ||||
verified existence of 2 revisions of 2 largefiles | verified existence of 2 revisions of 2 largefiles | ||||
$ tail -1 access.log | $ tail -1 access.log | ||||
$LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=statlfile+sha%3D972a1a11f19934401291cc99117ec614933374ce%3Bstatlfile+sha%3Dc801c9cfe94400963fcb683246217d5db77f9a9a x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob) | $LOCALIP - - [$LOGDATE$] "GET /?cmd=batch HTTP/1.1" 200 - x-hgarg-1:cmds=statlfile+sha%3D972a1a11f19934401291cc99117ec614933374ce%3Bstatlfile+sha%3Dc801c9cfe94400963fcb683246217d5db77f9a9a x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob) | ||||
$ hg -R batchverifyclone update | $ hg -R batchverifyclone update | ||||
getting changed largefiles | getting changed largefiles | ||||
2 largefiles updated, 0 removed | 2 largefiles updated, 0 removed | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
added 1 changesets with 1 changes to 1 files | added 1 changesets with 1 changes to 1 files | ||||
new changesets 6bba8cb6935d (1 drafts) | new changesets 6bba8cb6935d (1 drafts) | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
$ hg -R batchverifyclone verify --lfa | $ hg -R batchverifyclone verify --lfa | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 3 files | ||||
searching 3 changesets for largefiles | searching 3 changesets for largefiles | ||||
verified existence of 3 revisions of 3 largefiles | verified existence of 3 revisions of 3 largefiles | ||||
$ tail -1 access.log | $ tail -1 access.log | ||||
$LOCALIP - - [$LOGDATE$] "GET /?cmd=statlfile HTTP/1.1" 200 - x-hgarg-1:sha=c8559c3c9cfb42131794b7d8009230403b9b454c x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob) | $LOCALIP - - [$LOGDATE$] "GET /?cmd=statlfile HTTP/1.1" 200 - x-hgarg-1:sha=c8559c3c9cfb42131794b7d8009230403b9b454c x-hgproto-1:0.1 0.2 comp=$USUAL_COMPRESSIONS$ partial-pull (glob) | ||||
$ killdaemons.py | $ killdaemons.py | ||||
largefiles should not ask for password again after successful authorization | largefiles should not ask for password again after successful authorization |
2 largefiles updated, 0 removed | 2 largefiles updated, 0 removed | ||||
4 files updated, 0 files merged, 0 files removed, 0 files unresolved | 4 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
8 additional largefiles cached | 8 additional largefiles cached | ||||
$ hg -R a-clone1 verify --large --lfa --lfc | $ hg -R a-clone1 verify --large --lfa --lfc | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
10 files, 8 changesets, 24 total revisions | checked 8 changesets with 24 changes to 10 files | ||||
searching 8 changesets for largefiles | searching 8 changesets for largefiles | ||||
verified contents of 13 revisions of 6 largefiles | verified contents of 13 revisions of 6 largefiles | ||||
$ hg -R a-clone1 sum | $ hg -R a-clone1 sum | ||||
parent: 1:ce8896473775 | parent: 1:ce8896473775 | ||||
edit files | edit files | ||||
branch: default | branch: default | ||||
commit: (clean) | commit: (clean) | ||||
update: 6 new changesets (update) | update: 6 new changesets (update) | ||||
$ hg paths | $ hg paths | ||||
default = $TESTTMP/d | default = $TESTTMP/d | ||||
$ hg verify --large | $ hg verify --large | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
10 files, 10 changesets, 28 total revisions | checked 10 changesets with 28 changes to 10 files | ||||
searching 1 changesets for largefiles | searching 1 changesets for largefiles | ||||
verified existence of 3 revisions of 3 largefiles | verified existence of 3 revisions of 3 largefiles | ||||
- introduce missing blob in local store repo and remote store | - introduce missing blob in local store repo and remote store | ||||
and make sure that this is caught: | and make sure that this is caught: | ||||
$ mv $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 . | $ mv $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 . | ||||
$ rm .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 | $ rm .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 | ||||
$ hg verify --large | $ hg verify --large | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
10 files, 10 changesets, 28 total revisions | checked 10 changesets with 28 changes to 10 files | ||||
searching 1 changesets for largefiles | searching 1 changesets for largefiles | ||||
changeset 9:598410d3eb9a: sub/large4 references missing $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 | changeset 9:598410d3eb9a: sub/large4 references missing $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 | ||||
verified existence of 3 revisions of 3 largefiles | verified existence of 3 revisions of 3 largefiles | ||||
[1] | [1] | ||||
- introduce corruption and make sure that it is caught when checking content: | - introduce corruption and make sure that it is caught when checking content: | ||||
$ echo '5 cents' > $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 | $ echo '5 cents' > $TESTTMP/d/.hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 | ||||
$ hg verify -q --large --lfc | $ hg verify -q --large --lfc |
obsoleted 1 changesets | obsoleted 1 changesets | ||||
$ cd .. | $ cd .. | ||||
$ hg -R largefiles-repo-hg verify --large --lfa | $ hg -R largefiles-repo-hg verify --large --lfa | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
9 files, 8 changesets, 13 total revisions | checked 8 changesets with 13 changes to 9 files | ||||
searching 7 changesets for largefiles | searching 7 changesets for largefiles | ||||
changeset 0:d4892ec57ce2: large references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/2e000fa7e85759c7f4c254d4d9c33ef481e459a7 | changeset 0:d4892ec57ce2: large references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/2e000fa7e85759c7f4c254d4d9c33ef481e459a7 | ||||
changeset 1:334e5237836d: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c | changeset 1:334e5237836d: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c | ||||
changeset 2:261ad3f3f037: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c | changeset 2:261ad3f3f037: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/34e163be8e43c5631d8b92e9c43ab0bf0fa62b9c | ||||
changeset 3:55759520c76f: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38 | changeset 3:55759520c76f: sub/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38 | ||||
changeset 5:9cc5aa7204f0: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38 | changeset 5:9cc5aa7204f0: stuff/maybelarge.dat references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/76236b6a2c6102826c61af4297dd738fb3b1de38 | ||||
changeset 6:17126745edfd: anotherlarge references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3 | changeset 6:17126745edfd: anotherlarge references missing $TESTTMP/largefiles-repo-hg/.hg/largefiles/3b71f43ff30f4b15b5cd85dd9e95ebc7e84eb5a3 | ||||
verified existence of 6 revisions of 4 largefiles | verified existence of 6 revisions of 4 largefiles |
$ hg -R repo5 verify | $ hg -R repo5 verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
l@1: unpacking 46a2f24864bc: integrity check failed on data/l.i:0 | l@1: unpacking 46a2f24864bc: integrity check failed on data/l.i:0 | ||||
large@0: unpacking 2c531e0992ff: integrity check failed on data/large.i:0 | large@0: unpacking 2c531e0992ff: integrity check failed on data/large.i:0 | ||||
4 files, 5 changesets, 10 total revisions | checked 5 changesets with 10 changes to 4 files | ||||
2 integrity errors encountered! | 2 integrity errors encountered! | ||||
(first damaged changeset appears to be 0) | (first damaged changeset appears to be 0) | ||||
[1] | [1] | ||||
Updates work after cloning a damaged repo, if the damaged lfs objects aren't in | Updates work after cloning a damaged repo, if the damaged lfs objects aren't in | ||||
the update destination. Those objects won't be added to the new repo's store | the update destination. Those objects won't be added to the new repo's store | ||||
because they aren't accessed. | because they aren't accessed. | ||||
lfs: adding 66100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e to the usercache | lfs: adding 66100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e to the usercache | ||||
lfs: found 66100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e in the local lfs store | lfs: found 66100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e in the local lfs store | ||||
lfs: found 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b in the local lfs store | lfs: found 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b in the local lfs store | ||||
lfs: found 66100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e in the local lfs store | lfs: found 66100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e in the local lfs store | ||||
lfs: adding 89b6070915a3d573ff3599d1cda305bc5e38549b15c4847ab034169da66e1ca8 to the usercache | lfs: adding 89b6070915a3d573ff3599d1cda305bc5e38549b15c4847ab034169da66e1ca8 to the usercache | ||||
lfs: found 89b6070915a3d573ff3599d1cda305bc5e38549b15c4847ab034169da66e1ca8 in the local lfs store | lfs: found 89b6070915a3d573ff3599d1cda305bc5e38549b15c4847ab034169da66e1ca8 in the local lfs store | ||||
lfs: adding b1a6ea88da0017a0e77db139a54618986e9a2489bee24af9fe596de9daac498c to the usercache | lfs: adding b1a6ea88da0017a0e77db139a54618986e9a2489bee24af9fe596de9daac498c to the usercache | ||||
lfs: found b1a6ea88da0017a0e77db139a54618986e9a2489bee24af9fe596de9daac498c in the local lfs store | lfs: found b1a6ea88da0017a0e77db139a54618986e9a2489bee24af9fe596de9daac498c in the local lfs store | ||||
4 files, 5 changesets, 10 total revisions | checked 5 changesets with 10 changes to 4 files | ||||
Verify will not copy/link a corrupted file from the usercache into the local | Verify will not copy/link a corrupted file from the usercache into the local | ||||
store, and poison it. (The verify with a good remote now works.) | store, and poison it. (The verify with a good remote now works.) | ||||
$ rm -r fromcorrupt/.hg/store/lfs/objects/66/100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e | $ rm -r fromcorrupt/.hg/store/lfs/objects/66/100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e | ||||
$ hg -R fromcorrupt verify -v | $ hg -R fromcorrupt verify -v | ||||
repository uses revlog format 1 | repository uses revlog format 1 | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
l@1: unpacking 46a2f24864bc: integrity check failed on data/l.i:0 | l@1: unpacking 46a2f24864bc: integrity check failed on data/l.i:0 | ||||
lfs: found 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b in the local lfs store | lfs: found 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b in the local lfs store | ||||
large@0: unpacking 2c531e0992ff: integrity check failed on data/large.i:0 | large@0: unpacking 2c531e0992ff: integrity check failed on data/large.i:0 | ||||
lfs: found 89b6070915a3d573ff3599d1cda305bc5e38549b15c4847ab034169da66e1ca8 in the local lfs store | lfs: found 89b6070915a3d573ff3599d1cda305bc5e38549b15c4847ab034169da66e1ca8 in the local lfs store | ||||
lfs: found b1a6ea88da0017a0e77db139a54618986e9a2489bee24af9fe596de9daac498c in the local lfs store | lfs: found b1a6ea88da0017a0e77db139a54618986e9a2489bee24af9fe596de9daac498c in the local lfs store | ||||
4 files, 5 changesets, 10 total revisions | checked 5 changesets with 10 changes to 4 files | ||||
2 integrity errors encountered! | 2 integrity errors encountered! | ||||
(first damaged changeset appears to be 0) | (first damaged changeset appears to be 0) | ||||
[1] | [1] | ||||
$ hg -R fromcorrupt --config lfs.usercache=emptycache verify -v | $ hg -R fromcorrupt --config lfs.usercache=emptycache verify -v | ||||
repository uses revlog format 1 | repository uses revlog format 1 | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
lfs: found 66100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e in the usercache | lfs: found 66100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e in the usercache | ||||
lfs: found 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b in the local lfs store | lfs: found 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b in the local lfs store | ||||
lfs: found 66100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e in the local lfs store | lfs: found 66100b384bf761271b407d79fc30cdd0554f3b2c5d944836e936d584b88ce88e in the local lfs store | ||||
lfs: found 89b6070915a3d573ff3599d1cda305bc5e38549b15c4847ab034169da66e1ca8 in the local lfs store | lfs: found 89b6070915a3d573ff3599d1cda305bc5e38549b15c4847ab034169da66e1ca8 in the local lfs store | ||||
lfs: found b1a6ea88da0017a0e77db139a54618986e9a2489bee24af9fe596de9daac498c in the local lfs store | lfs: found b1a6ea88da0017a0e77db139a54618986e9a2489bee24af9fe596de9daac498c in the local lfs store | ||||
4 files, 5 changesets, 10 total revisions | checked 5 changesets with 10 changes to 4 files | ||||
Damaging a file required by the update destination fails the update. | Damaging a file required by the update destination fails the update. | ||||
$ echo 'damage' >> $TESTTMP/dummy-remote/22/f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | $ echo 'damage' >> $TESTTMP/dummy-remote/22/f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | ||||
$ hg --config lfs.usercache=emptycache clone -v repo5 fromcorrupt2 | $ hg --config lfs.usercache=emptycache clone -v repo5 fromcorrupt2 | ||||
updating to branch default | updating to branch default | ||||
resolving manifests | resolving manifests | ||||
abort: corrupt remote lfs object: 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | abort: corrupt remote lfs object: 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | ||||
$ hg -R fromcorrupt2 verify | $ hg -R fromcorrupt2 verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
l@1: unpacking 46a2f24864bc: integrity check failed on data/l.i:0 | l@1: unpacking 46a2f24864bc: integrity check failed on data/l.i:0 | ||||
large@0: unpacking 2c531e0992ff: integrity check failed on data/large.i:0 | large@0: unpacking 2c531e0992ff: integrity check failed on data/large.i:0 | ||||
4 files, 5 changesets, 10 total revisions | checked 5 changesets with 10 changes to 4 files | ||||
2 integrity errors encountered! | 2 integrity errors encountered! | ||||
(first damaged changeset appears to be 0) | (first damaged changeset appears to be 0) | ||||
[1] | [1] | ||||
Corrupt local files are not sent upstream. (The alternate dummy remote | Corrupt local files are not sent upstream. (The alternate dummy remote | ||||
avoids the corrupt lfs object in the original remote.) | avoids the corrupt lfs object in the original remote.) | ||||
$ mkdir $TESTTMP/dummy-remote2 | $ mkdir $TESTTMP/dummy-remote2 | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
l@1: unpacking 46a2f24864bc: integrity check failed on data/l.i:0 | l@1: unpacking 46a2f24864bc: integrity check failed on data/l.i:0 | ||||
lfs: found 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b in the local lfs store | lfs: found 22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b in the local lfs store | ||||
large@0: unpacking 2c531e0992ff: integrity check failed on data/large.i:0 | large@0: unpacking 2c531e0992ff: integrity check failed on data/large.i:0 | ||||
lfs: found 89b6070915a3d573ff3599d1cda305bc5e38549b15c4847ab034169da66e1ca8 in the local lfs store | lfs: found 89b6070915a3d573ff3599d1cda305bc5e38549b15c4847ab034169da66e1ca8 in the local lfs store | ||||
lfs: found b1a6ea88da0017a0e77db139a54618986e9a2489bee24af9fe596de9daac498c in the local lfs store | lfs: found b1a6ea88da0017a0e77db139a54618986e9a2489bee24af9fe596de9daac498c in the local lfs store | ||||
4 files, 5 changesets, 10 total revisions | checked 5 changesets with 10 changes to 4 files | ||||
2 integrity errors encountered! | 2 integrity errors encountered! | ||||
(first damaged changeset appears to be 0) | (first damaged changeset appears to be 0) | ||||
[1] | [1] | ||||
$ cat $TESTTMP/dummy-remote2/22/f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | $TESTDIR/f --sha256 | $ cat $TESTTMP/dummy-remote2/22/f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | $TESTDIR/f --sha256 | ||||
sha256=22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | sha256=22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | ||||
$ cat fromcorrupt2/.hg/store/lfs/objects/22/f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | $TESTDIR/f --sha256 | $ cat fromcorrupt2/.hg/store/lfs/objects/22/f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | $TESTDIR/f --sha256 | ||||
sha256=22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b | sha256=22f66a3fc0b9bf3f012c814303995ec07099b3a9ce02a7af84b5970811074a3b |
remote: adding file changes | remote: adding file changes | ||||
remote: added 4 changesets with 4 changes to 2 files | remote: added 4 changesets with 4 changes to 2 files | ||||
$ cd ../master | $ cd ../master | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 8 changesets, 10 total revisions | checked 8 changesets with 10 changes to 3 files | ||||
Can not push to wider repo if change affects paths in wider repo that are | Can not push to wider repo if change affects paths in wider repo that are | ||||
not also in narrower repo | not also in narrower repo | ||||
$ cd ../master | $ cd ../master | ||||
$ hg co -r 'desc("inside2 4")' | $ hg co -r 'desc("inside2 4")' | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo 5 > inside2/f | $ echo 5 > inside2/f | ||||
$ hg ci -m 'inside2 5' | $ hg ci -m 'inside2 5' |
We should also be able to unshare without breaking everything: | We should also be able to unshare without breaking everything: | ||||
$ hg unshare | $ hg unshare | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files |
I path:d6 | I path:d6 | ||||
I path:d9 | I path:d9 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests (tree !) | checking directory manifests (tree !) | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 11 changesets, 4 total revisions | checked 11 changesets with 4 changes to 4 files | ||||
$ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n" | $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n" | ||||
10: add d10/f | 10: add d10/f | ||||
9: add d9/f | 9: add d9/f | ||||
8: add d8/f | 8: add d8/f | ||||
7: add d7/f | 7: add d7/f | ||||
6: add d6/f | 6: add d6/f | ||||
5: add d5/f | 5: add d5/f | ||||
4: add d4/f | 4: add d4/f | ||||
Verify shouldn't claim the repo is corrupt after a widen. | Verify shouldn't claim the repo is corrupt after a widen. | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests (tree !) | checking directory manifests (tree !) | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
5 files, 11 changesets, 5 total revisions | checked 11 changesets with 5 changes to 5 files | ||||
Widening preserves parent of local commit | Widening preserves parent of local commit | ||||
$ cd .. | $ cd .. | ||||
$ hg clone -q --narrow ssh://user@dummy/upstream narrow3 --include d2 -r 2 | $ hg clone -q --narrow ssh://user@dummy/upstream narrow3 --include d2 -r 2 | ||||
$ cd narrow3 | $ cd narrow3 | ||||
$ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n" | $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n" | ||||
2: add d2/f | 2: add d2/f |
I path:d6 | I path:d6 | ||||
I path:d9 | I path:d9 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests (tree !) | checking directory manifests (tree !) | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 8 changesets, 4 total revisions | checked 8 changesets with 4 changes to 4 files | ||||
$ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n" | $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n" | ||||
...7: add d10/f | ...7: add d10/f | ||||
6: add d9/f | 6: add d9/f | ||||
...5: add d8/f | ...5: add d8/f | ||||
4: add d6/f | 4: add d6/f | ||||
...3: add d5/f | ...3: add d5/f | ||||
2: add d3/f | 2: add d3/f | ||||
...1: add d2/f | ...1: add d2/f | ||||
Verify shouldn't claim the repo is corrupt after a widen. | Verify shouldn't claim the repo is corrupt after a widen. | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests (tree !) | checking directory manifests (tree !) | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
5 files, 9 changesets, 5 total revisions | checked 9 changesets with 5 changes to 5 files | ||||
Widening preserves parent of local commit | Widening preserves parent of local commit | ||||
$ cd .. | $ cd .. | ||||
$ hg clone -q --narrow ssh://user@dummy/upstream narrow3 --include d2 -r 2 | $ hg clone -q --narrow ssh://user@dummy/upstream narrow3 --include d2 -r 2 | ||||
$ cd narrow3 | $ cd narrow3 | ||||
$ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n" | $ hg log -T "{if(ellipsis, '...')}{rev}: {desc}\n" | ||||
1: add d2/f | 1: add d2/f |
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 2 files | added 2 changesets with 2 changes to 2 files | ||||
$ hg -R ../other verify | $ hg -R ../other verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
Adding a changeset going extinct locally | Adding a changeset going extinct locally | ||||
------------------------------------------ | ------------------------------------------ | ||||
Pull a changeset that will immediatly goes extinct (because you already have a | Pull a changeset that will immediatly goes extinct (because you already have a | ||||
marker to obsolete him) | marker to obsolete him) | ||||
(test resolution of issue3788) | (test resolution of issue3788) | ||||
#require unix-permissions no-root reporevlogstore | #require unix-permissions no-root reporevlogstore | ||||
$ hg init t | $ hg init t | ||||
$ cd t | $ cd t | ||||
$ echo foo > a | $ echo foo > a | ||||
$ hg add a | $ hg add a | ||||
$ hg commit -m "1" | $ hg commit -m "1" | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ chmod -r .hg/store/data/a.i | $ chmod -r .hg/store/data/a.i | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
abort: Permission denied: $TESTTMP/t/.hg/store/data/a.i | abort: Permission denied: $TESTTMP/t/.hg/store/data/a.i | ||||
[255] | [255] | ||||
$ chmod +r .hg/store/data/a.i | $ chmod +r .hg/store/data/a.i | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ chmod -w .hg/store/data/a.i | $ chmod -w .hg/store/data/a.i | ||||
$ echo barber > a | $ echo barber > a | ||||
$ hg commit -m "2" | $ hg commit -m "2" | ||||
trouble committing a! | trouble committing a! | ||||
abort: Permission denied: $TESTTMP/t/.hg/store/data/a.i | abort: Permission denied: $TESTTMP/t/.hg/store/data/a.i | ||||
[255] | [255] |
because repo.cancopy() is False | because repo.cancopy() is False | ||||
$ cd ../initialrepo | $ cd ../initialrepo | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
7 files, 8 changesets, 7 total revisions | checked 8 changesets with 7 changes to 7 files | ||||
$ cd .. | $ cd .. | ||||
check whether HG_PENDING makes pending changes only in related | check whether HG_PENDING makes pending changes only in related | ||||
repositories visible to an external hook. | repositories visible to an external hook. | ||||
(emulate a transaction running concurrently by copied | (emulate a transaction running concurrently by copied | ||||
.hg/phaseroots.pending in subsequent test) | .hg/phaseroots.pending in subsequent test) |
$ chmod +w a/.hg/store # let test clean up | $ chmod +w a/.hg/store # let test clean up | ||||
$ cd b | $ cd b | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ cd .. | $ cd .. |
see the result | see the result | ||||
$ wait | $ wait | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 11 changesets, 11 total revisions | checked 11 changesets with 11 changes to 1 files | ||||
$ cd .. | $ cd .. |
adding foo | adding foo | ||||
$ hg commit -m 1 | $ hg commit -m 1 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ hg serve -p $HGPORT -d --pid-file=hg.pid | $ hg serve -p $HGPORT -d --pid-file=hg.pid | ||||
$ cat hg.pid >> $DAEMON_PIDS | $ cat hg.pid >> $DAEMON_PIDS | ||||
$ cd .. | $ cd .. | ||||
$ hg clone --pull http://foo:bar@localhost:$HGPORT/ copy | $ hg clone --pull http://foo:bar@localhost:$HGPORT/ copy | ||||
requesting all changes | requesting all changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 1 changesets with 1 changes to 1 files | added 1 changesets with 1 changes to 1 files | ||||
new changesets 340e38bdcde4 | new changesets 340e38bdcde4 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd copy | $ cd copy | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ hg co | $ hg co | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cat foo | $ cat foo | ||||
foo | foo | ||||
$ hg manifest --debug | $ hg manifest --debug | ||||
2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo | 2ed2a3912a0b24502043eae84ee4b279c18b90dd 644 foo |
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 1 changesets with 1 changes to 1 files | added 1 changesets with 1 changes to 1 files | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
pushing to test-revflag-1 | pushing to test-revflag-1 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 1 files | added 2 changesets with 2 changes to 1 files | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
pushing to test-revflag-2 | pushing to test-revflag-2 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 3 changesets with 3 changes to 1 files | added 3 changesets with 3 changes to 1 files | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
pushing to test-revflag-3 | pushing to test-revflag-3 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 4 changes to 1 files | added 4 changesets with 4 changes to 1 files | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 4 changesets, 4 total revisions | checked 4 changesets with 4 changes to 1 files | ||||
pushing to test-revflag-4 | pushing to test-revflag-4 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 1 files | added 2 changesets with 2 changes to 1 files | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
pushing to test-revflag-5 | pushing to test-revflag-5 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 3 changesets with 3 changes to 1 files | added 3 changesets with 3 changes to 1 files | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
pushing to test-revflag-6 | pushing to test-revflag-6 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 5 changes to 2 files | added 4 changesets with 5 changes to 2 files | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 4 changesets, 5 total revisions | checked 4 changesets with 5 changes to 2 files | ||||
pushing to test-revflag-7 | pushing to test-revflag-7 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 5 changesets with 6 changes to 3 files | added 5 changesets with 6 changes to 3 files | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 5 changesets, 6 total revisions | checked 5 changesets with 6 changes to 3 files | ||||
pushing to test-revflag-8 | pushing to test-revflag-8 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 5 changesets with 5 changes to 2 files | added 5 changesets with 5 changes to 2 files | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 5 total revisions | checked 5 changesets with 5 changes to 2 files | ||||
$ cd test-revflag-8 | $ cd test-revflag-8 | ||||
$ hg pull ../test-revflag-7 | $ hg pull ../test-revflag-7 | ||||
pulling from ../test-revflag-7 | pulling from ../test-revflag-7 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 2 changes to 3 files (+1 heads) | added 4 changesets with 2 changes to 3 files (+1 heads) | ||||
new changesets c70afb1ee985:faa2e4234c7a | new changesets c70afb1ee985:faa2e4234c7a | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 9 changesets, 7 total revisions | checked 9 changesets with 7 changes to 4 files | ||||
$ cd .. | $ cd .. | ||||
Test server side validation during push | Test server side validation during push | ||||
======================================= | ======================================= | ||||
$ hg init test-validation | $ hg init test-validation | ||||
$ cd test-validation | $ cd test-validation | ||||
Expected to fail: | Expected to fail: | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
beta@1: dddc47b3ba30 not in manifests | beta@1: dddc47b3ba30 not in manifests | ||||
2 files, 2 changesets, 4 total revisions | checked 2 changesets with 4 changes to 2 files | ||||
1 integrity errors encountered! | 1 integrity errors encountered! | ||||
(first damaged changeset appears to be 1) | (first damaged changeset appears to be 1) | ||||
[1] | [1] | ||||
$ hg push | $ hg push | ||||
pushing to $TESTTMP/test-validation | pushing to $TESTTMP/test-validation | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
Expected to fail: | Expected to fail: | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
beta@1: manifest refers to unknown revision dddc47b3ba30 | beta@1: manifest refers to unknown revision dddc47b3ba30 | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
1 integrity errors encountered! | 1 integrity errors encountered! | ||||
(first damaged changeset appears to be 1) | (first damaged changeset appears to be 1) | ||||
[1] | [1] | ||||
$ hg push | $ hg push | ||||
pushing to $TESTTMP/test-validation | pushing to $TESTTMP/test-validation | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets |
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
b@?: rev 1 points to nonexistent changeset 2 | b@?: rev 1 points to nonexistent changeset 2 | ||||
(expected 1) | (expected 1) | ||||
b@?: 736c29771fba not in manifests | b@?: 736c29771fba not in manifests | ||||
warning: orphan data file 'data/c.i' | warning: orphan data file 'data/c.i' | ||||
2 files, 2 changesets, 3 total revisions | checked 2 changesets with 3 changes to 2 files | ||||
2 warnings encountered! | 2 warnings encountered! | ||||
2 integrity errors encountered! | 2 integrity errors encountered! | ||||
% journal contents | % journal contents | ||||
00changelog.i | 00changelog.i | ||||
00manifest.i | 00manifest.i | ||||
data/b.i | data/b.i | ||||
data/c.i | data/c.i | ||||
rolling back interrupted transaction | rolling back interrupted transaction | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
$ teststrip 0 2 r .hg/store/data/b.i | $ teststrip 0 2 r .hg/store/data/b.i | ||||
% before update 0, strip 2 | % before update 0, strip 2 | ||||
changeset: 0:cb9a9f314b8b | changeset: 0:cb9a9f314b8b | ||||
user: test | user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | summary: a | ||||
abort: Permission denied .hg/store/data/b.i | abort: Permission denied .hg/store/data/b.i | ||||
% after update 0, strip 2 | % after update 0, strip 2 | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 4 changesets, 4 total revisions | checked 4 changesets with 4 changes to 3 files | ||||
% journal contents | % journal contents | ||||
(no journal) | (no journal) | ||||
$ teststrip 0 2 w .hg/store/00manifest.i | $ teststrip 0 2 w .hg/store/00manifest.i | ||||
% before update 0, strip 2 | % before update 0, strip 2 | ||||
changeset: 0:cb9a9f314b8b | changeset: 0:cb9a9f314b8b | ||||
user: test | user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: a | summary: a | ||||
manifest@?: rev 3 points to nonexistent changeset 3 | manifest@?: rev 3 points to nonexistent changeset 3 | ||||
manifest@?: 265a85892ecb not in changesets | manifest@?: 265a85892ecb not in changesets | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
c@3: in manifest but not in changeset | c@3: in manifest but not in changeset | ||||
checking files | checking files | ||||
b@?: rev 1 points to nonexistent changeset 2 | b@?: rev 1 points to nonexistent changeset 2 | ||||
(expected 1) | (expected 1) | ||||
c@?: rev 0 points to nonexistent changeset 3 | c@?: rev 0 points to nonexistent changeset 3 | ||||
3 files, 2 changesets, 4 total revisions | checked 2 changesets with 4 changes to 3 files | ||||
1 warnings encountered! | 1 warnings encountered! | ||||
7 integrity errors encountered! | 7 integrity errors encountered! | ||||
(first damaged changeset appears to be 3) | (first damaged changeset appears to be 3) | ||||
% journal contents | % journal contents | ||||
00changelog.i | 00changelog.i | ||||
00manifest.i | 00manifest.i | ||||
data/b.i | data/b.i | ||||
data/c.i | data/c.i | ||||
rolling back interrupted transaction | rolling back interrupted transaction | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
$ cd .. | $ cd .. |
setup repo | setup repo | ||||
$ hg init t | $ hg init t | ||||
$ cd t | $ cd t | ||||
$ echo a > a | $ echo a > a | ||||
$ hg commit -Am'add a' | $ hg commit -Am'add a' | ||||
adding a | adding a | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ hg parents | $ hg parents | ||||
changeset: 0:1f0dee641bb7 | changeset: 0:1f0dee641bb7 | ||||
tag: tip | tag: tip | ||||
user: test | user: test | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add a | summary: add a | ||||
rollback to null revision | rollback to null revision | ||||
$ hg status | $ hg status | ||||
$ hg rollback | $ hg rollback | ||||
repository tip rolled back to revision -1 (undo commit) | repository tip rolled back to revision -1 (undo commit) | ||||
working directory now based on revision -1 | working directory now based on revision -1 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
0 files, 0 changesets, 0 total revisions | checked 0 changesets with 0 changes to 0 files | ||||
$ hg parents | $ hg parents | ||||
$ hg status | $ hg status | ||||
A a | A a | ||||
Two changesets this time so we rollback to a real changeset | Two changesets this time so we rollback to a real changeset | ||||
$ hg commit -m'add a again' | $ hg commit -m'add a again' | ||||
$ echo a >> a | $ echo a >> a | ||||
$ hg commit -m'modify a' | $ hg commit -m'modify a' | ||||
$ echo "foo" > .hg/store/journal | $ echo "foo" > .hg/store/journal | ||||
$ hg recover | $ hg recover | ||||
rolling back interrupted transaction | rolling back interrupted transaction | ||||
couldn't read journal entry 'foo\n'! | couldn't read journal entry 'foo\n'! | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
rollback disabled by config | rollback disabled by config | ||||
$ cat >> $HGRCPATH <<EOF | $ cat >> $HGRCPATH <<EOF | ||||
> [ui] | > [ui] | ||||
> rollback = false | > rollback = false | ||||
> EOF | > EOF | ||||
$ echo narf >> pinky-sayings.txt | $ echo narf >> pinky-sayings.txt | ||||
$ hg add pinky-sayings.txt | $ hg add pinky-sayings.txt | ||||
abort: pretxncommit hook exited with status 1 | abort: pretxncommit hook exited with status 1 | ||||
[255] | [255] | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ cd .. | $ cd .. | ||||
Multiple I/O errors after transaction open are handled. | Multiple I/O errors after transaction open are handled. | ||||
This is effectively what happens if a peer disconnects in the middle | This is effectively what happens if a peer disconnects in the middle | ||||
of a transaction. | of a transaction. | ||||
$ hg init ioerror-multiple | $ hg init ioerror-multiple | ||||
$ cd ioerror-multiple | $ cd ioerror-multiple | ||||
$ echo 0 > foo | $ echo 0 > foo | ||||
$ hg -q commit -A -m initial | $ hg -q commit -A -m initial | ||||
warn during pretxncommit | warn during pretxncommit | ||||
warn during pretxnclose | warn during pretxnclose | ||||
warn during txnclose | warn during txnclose | ||||
$ echo 1 > foo | $ echo 1 > foo | ||||
$ hg --config ui.ioerrors=pretxncommit,pretxnclose,txnclose,txnabort,msgabort,msgrollback commit -m 'multiple errors' | $ hg --config ui.ioerrors=pretxncommit,pretxnclose,txnclose,txnabort,msgabort,msgrollback commit -m 'multiple errors' | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
$ cd .. | $ cd .. |
$ hg init test | $ hg init test | ||||
$ cd test | $ cd test | ||||
$ echo foo>foo | $ echo foo>foo | ||||
$ hg addremove | $ hg addremove | ||||
adding foo | adding foo | ||||
$ hg commit -m "1" | $ hg commit -m "1" | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ hg clone . ../branch | $ hg clone . ../branch | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd ../branch | $ cd ../branch | ||||
$ hg co | $ hg co | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ echo bar>>foo | $ echo bar>>foo | ||||
1 local changesets published | 1 local changesets published | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
$ hg co | $ hg co | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cat foo | $ cat foo | ||||
foo | foo | ||||
bar | bar | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd local-stream | $ cd local-stream | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 3 changesets, 2 total revisions | checked 3 changesets with 2 changes to 2 files | ||||
$ hg branches | $ hg branches | ||||
default 0:1160648e36ce | default 0:1160648e36ce | ||||
$ cd .. | $ cd .. | ||||
clone bookmarks via stream | clone bookmarks via stream | ||||
$ hg -R local-stream book mybook | $ hg -R local-stream book mybook | ||||
$ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/local-stream stream2 | $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/local-stream stream2 | ||||
verify | verify | ||||
$ cd local | $ cd local | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 3 changesets, 2 total revisions | checked 3 changesets with 2 changes to 2 files | ||||
$ cat >> .hg/hgrc <<EOF | $ cat >> .hg/hgrc <<EOF | ||||
> [hooks] | > [hooks] | ||||
> changegroup = sh -c "printenv.py changegroup-in-local 0 ../dummylog" | > changegroup = sh -c "printenv.py changegroup-in-local 0 ../dummylog" | ||||
> EOF | > EOF | ||||
empty default pull | empty default pull | ||||
$ hg paths | $ hg paths | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add | summary: add | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 4 changesets, 3 total revisions | checked 4 changesets with 3 changes to 2 files | ||||
$ hg cat -r tip foo | $ hg cat -r tip foo | ||||
bleah | bleah | ||||
$ echo z > z | $ echo z > z | ||||
$ hg ci -A -m z z | $ hg ci -A -m z z | ||||
created new head | created new head | ||||
test pushkeys and bookmarks | test pushkeys and bookmarks | ||||
added 1 changesets with 1 changes to 1 files | added 1 changesets with 1 changes to 1 files | ||||
new changesets bfaf4b5cbf01 | new changesets bfaf4b5cbf01 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 1 files | added 2 changesets with 2 changes to 1 files | ||||
new changesets bfaf4b5cbf01:21f32785131f | new changesets bfaf4b5cbf01:21f32785131f | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 3 changesets with 3 changes to 1 files | added 3 changesets with 3 changes to 1 files | ||||
new changesets bfaf4b5cbf01:4ce51a113780 | new changesets bfaf4b5cbf01:4ce51a113780 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 4 changes to 1 files | added 4 changesets with 4 changes to 1 files | ||||
new changesets bfaf4b5cbf01:93ee6ab32777 | new changesets bfaf4b5cbf01:93ee6ab32777 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 4 changesets, 4 total revisions | checked 4 changesets with 4 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 2 changesets with 2 changes to 1 files | added 2 changesets with 2 changes to 1 files | ||||
new changesets bfaf4b5cbf01:c70afb1ee985 | new changesets bfaf4b5cbf01:c70afb1ee985 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 3 changesets with 3 changes to 1 files | added 3 changesets with 3 changes to 1 files | ||||
new changesets bfaf4b5cbf01:f03ae5a9b979 | new changesets bfaf4b5cbf01:f03ae5a9b979 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 1 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 5 changes to 2 files | added 4 changesets with 5 changes to 2 files | ||||
new changesets bfaf4b5cbf01:095cb14b1b4d | new changesets bfaf4b5cbf01:095cb14b1b4d | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 4 changesets, 5 total revisions | checked 4 changesets with 5 changes to 2 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 5 changesets with 6 changes to 3 files | added 5 changesets with 6 changes to 3 files | ||||
new changesets bfaf4b5cbf01:faa2e4234c7a | new changesets bfaf4b5cbf01:faa2e4234c7a | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 5 changesets, 6 total revisions | checked 5 changesets with 6 changes to 3 files | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 5 changesets with 5 changes to 2 files | added 5 changesets with 5 changes to 2 files | ||||
new changesets bfaf4b5cbf01:916f1afdef90 | new changesets bfaf4b5cbf01:916f1afdef90 | ||||
updating to branch default | updating to branch default | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 5 total revisions | checked 5 changesets with 5 changes to 2 files | ||||
$ cd test-8 | $ cd test-8 | ||||
$ hg pull ../test-7 | $ hg pull ../test-7 | ||||
pulling from ../test-7 | pulling from ../test-7 | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 2 changes to 3 files (+1 heads) | added 4 changesets with 2 changes to 3 files (+1 heads) | ||||
new changesets c70afb1ee985:faa2e4234c7a | new changesets c70afb1ee985:faa2e4234c7a | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 9 changesets, 7 total revisions | checked 9 changesets with 7 changes to 4 files | ||||
$ cd .. | $ cd .. | ||||
$ cd test-1 | $ cd test-1 | ||||
$ hg pull -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" -r 4 ssh://user@dummy/remote | $ hg pull -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" -r 4 ssh://user@dummy/remote | ||||
pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 1 changesets with 0 changes to 0 files (+1 heads) | added 1 changesets with 0 changes to 0 files (+1 heads) | ||||
new changesets c70afb1ee985 | new changesets c70afb1ee985 | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 3 changesets, 2 total revisions | checked 3 changesets with 2 changes to 1 files | ||||
$ hg pull -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote | $ hg pull -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote | ||||
pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 6 changesets with 5 changes to 4 files | added 6 changesets with 5 changes to 4 files | ||||
new changesets 4ce51a113780:916f1afdef90 | new changesets 4ce51a113780:916f1afdef90 | ||||
added 2 changesets with 0 changes to 0 files (+1 heads) | added 2 changesets with 0 changes to 0 files (+1 heads) | ||||
new changesets c70afb1ee985:f03ae5a9b979 | new changesets c70afb1ee985:f03ae5a9b979 | ||||
(run 'hg heads' to see heads, 'hg merge' to merge) | (run 'hg heads' to see heads, 'hg merge' to merge) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 5 changesets, 3 total revisions | checked 5 changesets with 3 changes to 1 files | ||||
$ hg pull -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote | $ hg pull -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" ssh://user@dummy/remote | ||||
pulling from ssh://user@dummy/remote | pulling from ssh://user@dummy/remote | ||||
searching for changes | searching for changes | ||||
adding changesets | adding changesets | ||||
adding manifests | adding manifests | ||||
adding file changes | adding file changes | ||||
added 4 changesets with 4 changes to 4 files | added 4 changesets with 4 changes to 4 files | ||||
new changesets 93ee6ab32777:916f1afdef90 | new changesets 93ee6ab32777:916f1afdef90 | ||||
(run 'hg update' to get a working copy) | (run 'hg update' to get a working copy) | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
4 files, 9 changesets, 7 total revisions | checked 9 changesets with 7 changes to 4 files | ||||
$ cd .. | $ cd .. |
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd local-stream | $ cd local-stream | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 3 changesets, 2 total revisions | checked 3 changesets with 2 changes to 2 files | ||||
$ hg branches | $ hg branches | ||||
default 0:1160648e36ce | default 0:1160648e36ce | ||||
$ cd .. | $ cd .. | ||||
clone bookmarks via stream | clone bookmarks via stream | ||||
$ hg -R local-stream book mybook | $ hg -R local-stream book mybook | ||||
$ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/local-stream stream2 | $ hg clone -e "\"$PYTHON\" \"$TESTDIR/dummyssh\"" --stream ssh://user@dummy/local-stream stream2 | ||||
verify | verify | ||||
$ cd local | $ cd local | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 3 changesets, 2 total revisions | checked 3 changesets with 2 changes to 2 files | ||||
$ cat >> .hg/hgrc <<EOF | $ cat >> .hg/hgrc <<EOF | ||||
> [hooks] | > [hooks] | ||||
> changegroup = sh -c "printenv.py changegroup-in-local 0 ../dummylog" | > changegroup = sh -c "printenv.py changegroup-in-local 0 ../dummylog" | ||||
> EOF | > EOF | ||||
empty default pull | empty default pull | ||||
$ hg paths | $ hg paths | ||||
date: Thu Jan 01 00:00:00 1970 +0000 | date: Thu Jan 01 00:00:00 1970 +0000 | ||||
summary: add | summary: add | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 4 changesets, 3 total revisions | checked 4 changesets with 3 changes to 2 files | ||||
$ hg cat -r tip foo | $ hg cat -r tip foo | ||||
bleah | bleah | ||||
$ echo z > z | $ echo z > z | ||||
$ hg ci -A -m z z | $ hg ci -A -m z z | ||||
created new head | created new head | ||||
test pushkeys and bookmarks | test pushkeys and bookmarks | ||||
updating to branch default | updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | 2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd local | $ cd local | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 1 changesets, 2 total revisions | checked 1 changesets with 2 changes to 2 files | ||||
$ cat bar | $ cat bar | ||||
foo | foo | ||||
$ cd ../remote | $ cd ../remote | ||||
$ echo baz > quux | $ echo baz > quux | ||||
$ hg commit -A -mtest2 | $ hg commit -A -mtest2 | ||||
adding quux | adding quux | ||||
check for HTTP opener failures when cachefile does not exist | check for HTTP opener failures when cachefile does not exist | ||||
new changesets be090ea66256:322ea90975df | new changesets be090ea66256:322ea90975df | ||||
3 files updated, 0 files merged, 0 files removed, 0 files unresolved | 3 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd local2 | $ cd local2 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 1 changesets, 3 total revisions | checked 1 changesets with 3 changes to 3 files | ||||
checking subrepo links | checking subrepo links | ||||
$ cat a | $ cat a | ||||
a | a | ||||
$ hg paths | $ hg paths | ||||
default = static-http://localhost:$HGPORT/ | default = static-http://localhost:$HGPORT/ | ||||
test with empty repo (issue965) | test with empty repo (issue965) | ||||
$ cd .. | $ cd .. | ||||
$ hg init remotempty | $ hg init remotempty | ||||
$ hg clone static-http://localhost:$HGPORT/remotempty local3 | $ hg clone static-http://localhost:$HGPORT/remotempty local3 | ||||
no changes found | no changes found | ||||
updating to branch default | updating to branch default | ||||
0 files updated, 0 files merged, 0 files removed, 0 files unresolved | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd local3 | $ cd local3 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
0 files, 0 changesets, 0 total revisions | checked 0 changesets with 0 changes to 0 files | ||||
$ hg paths | $ hg paths | ||||
default = static-http://localhost:$HGPORT/remotempty | default = static-http://localhost:$HGPORT/remotempty | ||||
test with non-repo | test with non-repo | ||||
$ cd .. | $ cd .. | ||||
$ mkdir notarepo | $ mkdir notarepo | ||||
$ hg clone static-http://localhost:$HGPORT/notarepo local3 | $ hg clone static-http://localhost:$HGPORT/notarepo local3 |
> done | > done | ||||
% Trying to strip revision 0 | % Trying to strip revision 0 | ||||
saved backup bundle to $TESTTMP/0/.hg/strip-backup/*-backup.hg (glob) | saved backup bundle to $TESTTMP/0/.hg/strip-backup/*-backup.hg (glob) | ||||
% Verifying | % Verifying | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
7 files, 4 changesets, 15 total revisions | checked 4 changesets with 15 changes to 7 files | ||||
% Trying to strip revision 1 | % Trying to strip revision 1 | ||||
saved backup bundle to $TESTTMP/1/.hg/strip-backup/*-backup.hg (glob) | saved backup bundle to $TESTTMP/1/.hg/strip-backup/*-backup.hg (glob) | ||||
% Verifying | % Verifying | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
7 files, 4 changesets, 14 total revisions | checked 4 changesets with 14 changes to 7 files | ||||
% Trying to strip revision 2 | % Trying to strip revision 2 | ||||
saved backup bundle to $TESTTMP/2/.hg/strip-backup/*-backup.hg (glob) | saved backup bundle to $TESTTMP/2/.hg/strip-backup/*-backup.hg (glob) | ||||
% Verifying | % Verifying | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
7 files, 4 changesets, 14 total revisions | checked 4 changesets with 14 changes to 7 files | ||||
% Trying to strip revision 3 | % Trying to strip revision 3 | ||||
saved backup bundle to $TESTTMP/3/.hg/strip-backup/*-backup.hg (glob) | saved backup bundle to $TESTTMP/3/.hg/strip-backup/*-backup.hg (glob) | ||||
% Verifying | % Verifying | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
7 files, 4 changesets, 19 total revisions | checked 4 changesets with 19 changes to 7 files | ||||
% Trying to strip revision 4 | % Trying to strip revision 4 | ||||
saved backup bundle to $TESTTMP/4/.hg/strip-backup/*-backup.hg (glob) | saved backup bundle to $TESTTMP/4/.hg/strip-backup/*-backup.hg (glob) | ||||
% Verifying | % Verifying | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
7 files, 4 changesets, 19 total revisions | checked 4 changesets with 19 changes to 7 files | ||||
$ hg ci -m "amended subrepo (again)" | $ hg ci -m "amended subrepo (again)" | ||||
$ hg --config extensions.strip= --hidden strip -R subrepo -qr 'tip' --config devel.strip-obsmarkers=no | $ hg --config extensions.strip= --hidden strip -R subrepo -qr 'tip' --config devel.strip-obsmarkers=no | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 5 total revisions | checked 5 changesets with 5 changes to 2 files | ||||
checking subrepo links | checking subrepo links | ||||
subrepo 'subrepo' is hidden in revision a66de08943b6 | subrepo 'subrepo' is hidden in revision a66de08943b6 | ||||
subrepo 'subrepo' is hidden in revision 674d05939c1e | subrepo 'subrepo' is hidden in revision 674d05939c1e | ||||
subrepo 'subrepo' not found in revision a7d05d9055a4 | subrepo 'subrepo' not found in revision a7d05d9055a4 | ||||
verifying shouldn't init a new subrepo if the reference doesn't exist | verifying shouldn't init a new subrepo if the reference doesn't exist | ||||
$ mv subrepo b | $ mv subrepo b | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 5 changesets, 5 total revisions | checked 5 changesets with 5 changes to 2 files | ||||
checking subrepo links | checking subrepo links | ||||
0: repository $TESTTMP/repo/subrepo not found | 0: repository $TESTTMP/repo/subrepo not found | ||||
1: repository $TESTTMP/repo/subrepo not found | 1: repository $TESTTMP/repo/subrepo not found | ||||
3: repository $TESTTMP/repo/subrepo not found | 3: repository $TESTTMP/repo/subrepo not found | ||||
4: repository $TESTTMP/repo/subrepo not found | 4: repository $TESTTMP/repo/subrepo not found | ||||
$ ls | $ ls | ||||
b | b | ||||
$ mv b subrepo | $ mv b subrepo | ||||
$ cd .. | $ cd .. |
$ grep treemanifest clone/.hg/requires | $ grep treemanifest clone/.hg/requires | ||||
treemanifest | treemanifest | ||||
$ hg -R clone verify | $ hg -R clone verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
10 files, 11 changesets, 15 total revisions | checked 11 changesets with 15 changes to 10 files | ||||
Create deeper repo with tree manifests. | Create deeper repo with tree manifests. | ||||
$ hg --config experimental.treemanifest=True init deeprepo | $ hg --config experimental.treemanifest=True init deeprepo | ||||
$ cd deeprepo | $ cd deeprepo | ||||
$ mkdir .A | $ mkdir .A | ||||
$ mkdir b | $ mkdir b | ||||
Verify works | Verify works | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
8 files, 4 changesets, 18 total revisions | checked 4 changesets with 18 changes to 8 files | ||||
#if repofncache | #if repofncache | ||||
Dirlogs are included in fncache | Dirlogs are included in fncache | ||||
$ grep meta/.A/00manifest.i .hg/store/fncache | $ grep meta/.A/00manifest.i .hg/store/fncache | ||||
meta/.A/00manifest.i | meta/.A/00manifest.i | ||||
Rebuilt fncache includes dirlogs | Rebuilt fncache includes dirlogs | ||||
$ rm .hg/store/fncache | $ rm .hg/store/fncache | ||||
warning: orphan data file 'meta/b/foo/apple/00manifest.i' (reporevlogstore !) | warning: orphan data file 'meta/b/foo/apple/00manifest.i' (reporevlogstore !) | ||||
warning: orphan data file 'meta/b/foo/apple/bees/00manifest.i' (reporevlogstore !) | warning: orphan data file 'meta/b/foo/apple/bees/00manifest.i' (reporevlogstore !) | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
b/bar/fruits.txt@0: in changeset but not in manifest | b/bar/fruits.txt@0: in changeset but not in manifest | ||||
b/bar/orange/fly/gnat.py@0: in changeset but not in manifest | b/bar/orange/fly/gnat.py@0: in changeset but not in manifest | ||||
b/bar/orange/fly/housefly.txt@0: in changeset but not in manifest | b/bar/orange/fly/housefly.txt@0: in changeset but not in manifest | ||||
b/foo/apple/bees/flower.py@0: in changeset but not in manifest | b/foo/apple/bees/flower.py@0: in changeset but not in manifest | ||||
checking files | checking files | ||||
8 files, 4 changesets, 18 total revisions | checked 4 changesets with 18 changes to 8 files | ||||
6 warnings encountered! (reporevlogstore !) | 6 warnings encountered! (reporevlogstore !) | ||||
9 integrity errors encountered! | 9 integrity errors encountered! | ||||
(first damaged changeset appears to be 0) | (first damaged changeset appears to be 0) | ||||
[1] | [1] | ||||
$ cp -R .hg/store-newcopy/. .hg/store | $ cp -R .hg/store-newcopy/. .hg/store | ||||
Verify reports missing dirlog entry | Verify reports missing dirlog entry | ||||
$ mv -f .hg/store-copy/meta/b/00manifest.* .hg/store/meta/b/ | $ mv -f .hg/store-copy/meta/b/00manifest.* .hg/store/meta/b/ | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
b/@2: parent-directory manifest refers to unknown revision ac0d30948e0b | b/@2: parent-directory manifest refers to unknown revision ac0d30948e0b | ||||
b/@3: parent-directory manifest refers to unknown revision 367152e6af28 | b/@3: parent-directory manifest refers to unknown revision 367152e6af28 | ||||
b/bar/@?: rev 2 points to unexpected changeset 2 | b/bar/@?: rev 2 points to unexpected changeset 2 | ||||
b/bar/@?: 44d7e1146e0d not in parent-directory manifest | b/bar/@?: 44d7e1146e0d not in parent-directory manifest | ||||
b/bar/@?: rev 3 points to unexpected changeset 3 | b/bar/@?: rev 3 points to unexpected changeset 3 | ||||
b/bar/@?: 70b10c6b17b7 not in parent-directory manifest | b/bar/@?: 70b10c6b17b7 not in parent-directory manifest | ||||
b/bar/orange/@?: rev 2 points to unexpected changeset 3 | b/bar/orange/@?: rev 2 points to unexpected changeset 3 | ||||
(expected None) | (expected None) | ||||
b/bar/orange/fly/@?: rev 2 points to unexpected changeset 3 | b/bar/orange/fly/@?: rev 2 points to unexpected changeset 3 | ||||
(expected None) | (expected None) | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
8 files, 4 changesets, 18 total revisions | checked 4 changesets with 18 changes to 8 files | ||||
2 warnings encountered! | 2 warnings encountered! | ||||
8 integrity errors encountered! | 8 integrity errors encountered! | ||||
(first damaged changeset appears to be 2) | (first damaged changeset appears to be 2) | ||||
[1] | [1] | ||||
$ cp -R .hg/store-newcopy/. .hg/store | $ cp -R .hg/store-newcopy/. .hg/store | ||||
Test cloning a treemanifest repo over http. | Test cloning a treemanifest repo over http. | ||||
$ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log | $ hg serve -p $HGPORT -d --pid-file=hg.pid --errorlog=errors.log | ||||
Verify passes. | Verify passes. | ||||
$ cd deepclone | $ cd deepclone | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
8 files, 4 changesets, 18 total revisions | checked 4 changesets with 18 changes to 8 files | ||||
$ cd .. | $ cd .. | ||||
#if reporevlogstore | #if reporevlogstore | ||||
Create clones using old repo formats to use in later tests | Create clones using old repo formats to use in later tests | ||||
$ hg clone --config format.usestore=False \ | $ hg clone --config format.usestore=False \ | ||||
> --config experimental.changegroup3=True \ | > --config experimental.changegroup3=True \ | ||||
> http://localhost:$HGPORT deeprepo-basicstore | > http://localhost:$HGPORT deeprepo-basicstore | ||||
requesting all changes | requesting all changes | ||||
Local clone with basicstore | Local clone with basicstore | ||||
$ hg clone -U deeprepo-basicstore local-clone-basicstore | $ hg clone -U deeprepo-basicstore local-clone-basicstore | ||||
$ hg -R local-clone-basicstore verify | $ hg -R local-clone-basicstore verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
8 files, 4 changesets, 18 total revisions | checked 4 changesets with 18 changes to 8 files | ||||
Local clone with encodedstore | Local clone with encodedstore | ||||
$ hg clone -U deeprepo-encodedstore local-clone-encodedstore | $ hg clone -U deeprepo-encodedstore local-clone-encodedstore | ||||
$ hg -R local-clone-encodedstore verify | $ hg -R local-clone-encodedstore verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
8 files, 4 changesets, 18 total revisions | checked 4 changesets with 18 changes to 8 files | ||||
Local clone with fncachestore | Local clone with fncachestore | ||||
$ hg clone -U deeprepo local-clone-fncachestore | $ hg clone -U deeprepo local-clone-fncachestore | ||||
$ hg -R local-clone-fncachestore verify | $ hg -R local-clone-fncachestore verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
8 files, 4 changesets, 18 total revisions | checked 4 changesets with 18 changes to 8 files | ||||
Stream clone with basicstore | Stream clone with basicstore | ||||
$ hg clone --config experimental.changegroup3=True --stream -U \ | $ hg clone --config experimental.changegroup3=True --stream -U \ | ||||
> http://localhost:$HGPORT1 stream-clone-basicstore | > http://localhost:$HGPORT1 stream-clone-basicstore | ||||
streaming all changes | streaming all changes | ||||
18 files to transfer, * of data (glob) | 18 files to transfer, * of data (glob) | ||||
transferred * in * seconds (*) (glob) | transferred * in * seconds (*) (glob) | ||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ hg -R stream-clone-basicstore verify | $ hg -R stream-clone-basicstore verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
8 files, 4 changesets, 18 total revisions | checked 4 changesets with 18 changes to 8 files | ||||
Stream clone with encodedstore | Stream clone with encodedstore | ||||
$ hg clone --config experimental.changegroup3=True --stream -U \ | $ hg clone --config experimental.changegroup3=True --stream -U \ | ||||
> http://localhost:$HGPORT2 stream-clone-encodedstore | > http://localhost:$HGPORT2 stream-clone-encodedstore | ||||
streaming all changes | streaming all changes | ||||
18 files to transfer, * of data (glob) | 18 files to transfer, * of data (glob) | ||||
transferred * in * seconds (*) (glob) | transferred * in * seconds (*) (glob) | ||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ hg -R stream-clone-encodedstore verify | $ hg -R stream-clone-encodedstore verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
8 files, 4 changesets, 18 total revisions | checked 4 changesets with 18 changes to 8 files | ||||
Stream clone with fncachestore | Stream clone with fncachestore | ||||
$ hg clone --config experimental.changegroup3=True --stream -U \ | $ hg clone --config experimental.changegroup3=True --stream -U \ | ||||
> http://localhost:$HGPORT stream-clone-fncachestore | > http://localhost:$HGPORT stream-clone-fncachestore | ||||
streaming all changes | streaming all changes | ||||
18 files to transfer, * of data (glob) | 18 files to transfer, * of data (glob) | ||||
transferred * in * seconds (*) (glob) | transferred * in * seconds (*) (glob) | ||||
searching for changes | searching for changes | ||||
no changes found | no changes found | ||||
$ hg -R stream-clone-fncachestore verify | $ hg -R stream-clone-fncachestore verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
checking directory manifests | checking directory manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
8 files, 4 changesets, 18 total revisions | checked 4 changesets with 18 changes to 8 files | ||||
Packed bundle | Packed bundle | ||||
$ hg -R deeprepo debugcreatestreamclonebundle repo-packed.hg | $ hg -R deeprepo debugcreatestreamclonebundle repo-packed.hg | ||||
writing 5330 bytes for 18 files | writing 5330 bytes for 18 files | ||||
bundle requirements: generaldelta, revlogv1, treemanifest | bundle requirements: generaldelta, revlogv1, treemanifest | ||||
$ hg debugbundle --spec repo-packed.hg | $ hg debugbundle --spec repo-packed.hg | ||||
none-packed1;requirements%3Dgeneraldelta%2Crevlogv1%2Ctreemanifest | none-packed1;requirements%3Dgeneraldelta%2Crevlogv1%2Ctreemanifest | ||||
$ hg -R repo3 paths | $ hg -R repo3 paths | ||||
default = union:repo1+repo2 | default = union:repo1+repo2 | ||||
$ hg -R repo3 verify | $ hg -R repo3 verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
6 files, 6 changesets, 11 total revisions | checked 6 changesets with 11 changes to 6 files | ||||
$ hg -R repo3 heads --template '{rev}:{node|short} {desc|firstline}\n' | $ hg -R repo3 heads --template '{rev}:{node|short} {desc|firstline}\n' | ||||
5:2f0d178c469c repo2-3 | 5:2f0d178c469c repo2-3 | ||||
2:68c0685446a3 repo1-2 | 2:68c0685446a3 repo1-2 | ||||
$ hg -R repo3 log --template '{rev}:{node|short} {desc|firstline}\n' | $ hg -R repo3 log --template '{rev}:{node|short} {desc|firstline}\n' | ||||
5:2f0d178c469c repo2-3 | 5:2f0d178c469c repo2-3 | ||||
4:9e6fb3e0b9da repo2-2-merge | 4:9e6fb3e0b9da repo2-2-merge |
verify should be happy | verify should be happy | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 3 changesets, 3 total revisions | checked 3 changesets with 3 changes to 3 files | ||||
old store should be backed up | old store should be backed up | ||||
$ ls .hg/upgradebackup.*/store | $ ls .hg/upgradebackup.*/store | ||||
00changelog.i | 00changelog.i | ||||
00manifest.i | 00manifest.i | ||||
data | data | ||||
fncache | fncache | ||||
lfs | lfs | ||||
$ find .hg/store/lfs -type f | $ find .hg/store/lfs -type f | ||||
.hg/store/lfs/objects/d0/beab232adff5ba365880366ad30b1edb85c4c5372442b5d2fe27adc96d653f | .hg/store/lfs/objects/d0/beab232adff5ba365880366ad30b1edb85c4c5372442b5d2fe27adc96d653f | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
2 files, 2 changesets, 2 total revisions | checked 2 changesets with 2 changes to 2 files | ||||
$ hg debugdata lfs.bin 0 | $ hg debugdata lfs.bin 0 | ||||
version https://git-lfs.github.com/spec/v1 | version https://git-lfs.github.com/spec/v1 | ||||
oid sha256:d0beab232adff5ba365880366ad30b1edb85c4c5372442b5d2fe27adc96d653f | oid sha256:d0beab232adff5ba365880366ad30b1edb85c4c5372442b5d2fe27adc96d653f | ||||
size 16 | size 16 | ||||
x-is-binary 0 | x-is-binary 0 | ||||
$ cd .. | $ cd .. | ||||
verify | verify | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 1 changesets, 3 total revisions | checked 1 changesets with 3 changes to 3 files | ||||
verify with journal | verify with journal | ||||
$ touch .hg/store/journal | $ touch .hg/store/journal | ||||
$ hg verify | $ hg verify | ||||
abandoned transaction found - run hg recover | abandoned transaction found - run hg recover | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
3 files, 1 changesets, 3 total revisions | checked 1 changesets with 3 changes to 3 files | ||||
$ rm .hg/store/journal | $ rm .hg/store/journal | ||||
introduce some bugs in repo | introduce some bugs in repo | ||||
$ cd .hg/store/data | $ cd .hg/store/data | ||||
$ mv _f_o_o.txt.i X_f_o_o.txt.i | $ mv _f_o_o.txt.i X_f_o_o.txt.i | ||||
$ mv bar.txt.i xbar.txt.i | $ mv bar.txt.i xbar.txt.i | ||||
$ rm _q_u_i_c_k.txt.i | $ rm _q_u_i_c_k.txt.i | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
warning: revlog 'data/FOO.txt.i' not in fncache! | warning: revlog 'data/FOO.txt.i' not in fncache! | ||||
0: empty or missing FOO.txt | 0: empty or missing FOO.txt | ||||
FOO.txt@0: manifest refers to unknown revision f62022d3d590 | FOO.txt@0: manifest refers to unknown revision f62022d3d590 | ||||
warning: revlog 'data/QUICK.txt.i' not in fncache! | warning: revlog 'data/QUICK.txt.i' not in fncache! | ||||
0: empty or missing QUICK.txt | 0: empty or missing QUICK.txt | ||||
QUICK.txt@0: manifest refers to unknown revision 88b857db8eba | QUICK.txt@0: manifest refers to unknown revision 88b857db8eba | ||||
warning: revlog 'data/bar.txt.i' not in fncache! | warning: revlog 'data/bar.txt.i' not in fncache! | ||||
0: empty or missing bar.txt | 0: empty or missing bar.txt | ||||
bar.txt@0: manifest refers to unknown revision 256559129457 | bar.txt@0: manifest refers to unknown revision 256559129457 | ||||
3 files, 1 changesets, 0 total revisions | checked 1 changesets with 0 changes to 3 files | ||||
3 warnings encountered! | 3 warnings encountered! | ||||
hint: run "hg debugrebuildfncache" to recover from corrupt fncache | hint: run "hg debugrebuildfncache" to recover from corrupt fncache | ||||
6 integrity errors encountered! | 6 integrity errors encountered! | ||||
(first damaged changeset appears to be 0) | (first damaged changeset appears to be 0) | ||||
[1] | [1] | ||||
$ cd ../../.. | $ cd ../../.. | ||||
$ cd .. | $ cd .. | ||||
marked working directory as branch foo | marked working directory as branch foo | ||||
(branches are permanent and global, did you want a bookmark?) | (branches are permanent and global, did you want a bookmark?) | ||||
$ hg ci -m branchfoo | $ hg ci -m branchfoo | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
0 files, 1 changesets, 0 total revisions | checked 1 changesets with 0 changes to 0 files | ||||
test revlog corruption | test revlog corruption | ||||
$ touch a | $ touch a | ||||
$ hg add a | $ hg add a | ||||
$ hg ci -m a | $ hg ci -m a | ||||
$ echo 'corrupted' > b | $ echo 'corrupted' > b | ||||
$ dd if=.hg/store/data/a.i of=start bs=1 count=20 2>/dev/null | $ dd if=.hg/store/data/a.i of=start bs=1 count=20 2>/dev/null | ||||
$ cat start b > .hg/store/data/a.i | $ cat start b > .hg/store/data/a.i | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
a@1: broken revlog! (index data/a.i is corrupted) | a@1: broken revlog! (index data/a.i is corrupted) | ||||
warning: orphan data file 'data/a.i' | warning: orphan data file 'data/a.i' | ||||
1 files, 2 changesets, 0 total revisions | checked 2 changesets with 0 changes to 1 files | ||||
1 warnings encountered! | 1 warnings encountered! | ||||
1 integrity errors encountered! | 1 integrity errors encountered! | ||||
(first damaged changeset appears to be 1) | (first damaged changeset appears to be 1) | ||||
[1] | [1] | ||||
$ cd .. | $ cd .. | ||||
test revlog format 0 | test revlog format 0 | ||||
$ revlog-formatv0.py | $ revlog-formatv0.py | ||||
$ cd formatv0 | $ cd formatv0 | ||||
$ hg verify | $ hg verify | ||||
repository uses revlog format 0 | repository uses revlog format 0 | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ cd .. | $ cd .. | ||||
test flag processor and skipflags | test flag processor and skipflags | ||||
$ hg init skipflags | $ hg init skipflags | ||||
$ cd skipflags | $ cd skipflags | ||||
$ cat >> .hg/hgrc <<EOF | $ cat >> .hg/hgrc <<EOF | ||||
> [extensions] | > [extensions] | ||||
> flagprocessor=$RUNTESTDIR/flagprocessorext.py | > flagprocessor=$RUNTESTDIR/flagprocessorext.py | ||||
> EOF | > EOF | ||||
$ echo '[BASE64]content' > base64 | $ echo '[BASE64]content' > base64 | ||||
$ hg commit -Aqm 'flag processor content' base64 | $ hg commit -Aqm 'flag processor content' base64 | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
$ cat >> $TESTTMP/break-base64.py <<EOF | $ cat >> $TESTTMP/break-base64.py <<EOF | ||||
> from __future__ import absolute_import | > from __future__ import absolute_import | ||||
> import base64 | > import base64 | ||||
> base64.b64decode=lambda x: x | > base64.b64decode=lambda x: x | ||||
> EOF | > EOF | ||||
$ cat >> .hg/hgrc <<EOF | $ cat >> .hg/hgrc <<EOF | ||||
> breakbase64=$TESTTMP/break-base64.py | > breakbase64=$TESTTMP/break-base64.py | ||||
> EOF | > EOF | ||||
$ hg verify | $ hg verify | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
base64@0: unpacking 794cee7777cb: integrity check failed on data/base64.i:0 | base64@0: unpacking 794cee7777cb: integrity check failed on data/base64.i:0 | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||
1 integrity errors encountered! | 1 integrity errors encountered! | ||||
(first damaged changeset appears to be 0) | (first damaged changeset appears to be 0) | ||||
[1] | [1] | ||||
$ hg verify --config verify.skipflags=2147483647 | $ hg verify --config verify.skipflags=2147483647 | ||||
checking changesets | checking changesets | ||||
checking manifests | checking manifests | ||||
crosschecking files in changesets and manifests | crosschecking files in changesets and manifests | ||||
checking files | checking files | ||||
1 files, 1 changesets, 1 total revisions | checked 1 changesets with 1 changes to 1 files | ||||