# HG changeset patch # User Gregory Szorc # Date 2017-04-08 18:35:29 # Node ID 8c9178d647f7eb9d4408983681851bab34cfcc40 # Parent 0b913e1e725b58b98f9cce26d28c43d5aab855e1 tests: add test demonstrating buggy path handling `hg debugupgraderepo` is currently buggy with regards to path handling when copying files in .hg/store/. Specifically, it applies the store filename encoding to paths instead of operating on raw files. This commit adds a test demonstrating the buggy behavior. diff --git a/tests/test-upgrade-repo.t b/tests/test-upgrade-repo.t --- a/tests/test-upgrade-repo.t +++ b/tests/test-upgrade-repo.t @@ -310,3 +310,37 @@ old store should be backed up undo.phaseroots $ cd .. + +store files with special filenames aren't encoded during copy + + $ hg init store-filenames + $ cd store-filenames + $ touch foo + $ hg -q commit -A -m initial + $ touch .hg/store/.XX_special_filename + + $ hg debugupgraderepo --run + upgrade will perform the following actions: + + requirements + preserved: dotencode, fncache, generaldelta, revlogv1, store + + beginning upgrade... + repository locked and read-only + creating temporary repository to stage migrated data: $TESTTMP/store-filenames/.hg/upgrade.* (glob) + (it is safe to interrupt this process any time before data migration completes) + migrating 3 total revisions (1 in filelogs, 1 in manifests, 1 in changelog) + migrating 109 bytes in store; 107 bytes tracked data + migrating 1 filelogs containing 1 revisions (0 bytes in store; 0 bytes tracked data) + finished migrating 1 filelog revisions across 1 filelogs; change in size: 0 bytes + migrating 1 manifests containing 1 revisions (46 bytes in store; 45 bytes tracked data) + finished migrating 1 manifest revisions across 1 manifests; change in size: 0 bytes + migrating changelog containing 1 revisions (63 bytes in store; 62 bytes tracked data) + finished migrating 1 changelog revisions; change in size: 0 bytes + finished migrating 3 total revisions; total change in store size: 0 bytes + copying .XX_special_filename + removing temporary repository $TESTTMP/store-filenames/.hg/upgrade.* (glob) + abort: No such file or directory: $TESTTMP/store-filenames/.hg/store/~2e_x_x__special__filename + [255] + + $ cd ..