comparison tests/test-share.t @ 39696:9de1a1c83cd7

localrepo: document and test bug around opening shared repos As part of refactoring this code, I realized that we don't validate the requirements of a shared repository. This commit documents that next to the requirements validation code and adds a test demonstrating the buggy behavior. I'm not sure if I'll fix this. But it is definitely a bug that users could encounter, as LFS, narrow, and potentially other extensions dynamically add requirements on first use. One part of this I'm not sure about is how to handle loading the .hg/hgrc of the shared repo. We need to do that in order to load extensions. But we don't want that repo's hgrc to overwrite the current repo's. Differential Revision: https://phab.mercurial-scm.org/D4572
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 12 Sep 2018 13:10:45 -0700
parents c11e8894b9ca
children 4ece3cdfd907
comparison
equal deleted inserted replaced
39695:cb2dcfa5cade 39696:9de1a1c83cd7
437 [255] 437 [255]
438 $ cd ../.. 438 $ cd ../..
439 439
440 $ rm -r thatdir 440 $ rm -r thatdir
441 441
442 Demonstrate buggy behavior around requirements validation
443 See comment in localrepo.py:makelocalrepository() for more.
444
445 $ hg init sharenewrequires
446 $ hg share sharenewrequires shareoldrequires
447 updating working directory
448 0 files updated, 0 files merged, 0 files removed, 0 files unresolved
449
450 $ cat >> sharenewrequires/.hg/requires << EOF
451 > missing-requirement
452 > EOF
453
454 We cannot open the repo with the unknown requirement
455
456 $ hg -R sharenewrequires status
457 abort: repository requires features unknown to this Mercurial: missing-requirement!
458 (see https://mercurial-scm.org/wiki/MissingRequirement for more information)
459 [255]
460
461 BUG: we don't get the same error when opening the shared repo pointing to it
462
463 $ hg -R shareoldrequires status
464
442 Explicitly kill daemons to let the test exit on Windows 465 Explicitly kill daemons to let the test exit on Windows
443 466
444 $ killdaemons.py 467 $ killdaemons.py
445 468