Show More
@@ -1,4 +1,5 b'' | |||||
1 | # localrepo.py - read/write repository class for mercurial |
|
1 | # localrepo.py - read/write repository class for mercurial | |
|
2 | # coding: utf-8 | |||
2 | # |
|
3 | # | |
3 | # Copyright 2005-2007 Olivia Mackall <olivia@selenic.com> |
|
4 | # Copyright 2005-2007 Olivia Mackall <olivia@selenic.com> | |
4 | # |
|
5 | # | |
@@ -3661,17 +3662,36 b' def newreporequirements(ui, createopts):' | |||||
3661 | if ui.configbool(b'format', b'use-share-safe'): |
|
3662 | if ui.configbool(b'format', b'use-share-safe'): | |
3662 | requirements.add(requirementsmod.SHARESAFE_REQUIREMENT) |
|
3663 | requirements.add(requirementsmod.SHARESAFE_REQUIREMENT) | |
3663 |
|
3664 | |||
3664 | # If the repo is being created from a shared repository, we copy |
|
3665 | # if we are creating a share-repo¹ we have to handle requirement | |
3665 | # its requirements. |
|
3666 | # differently. | |
|
3667 | # | |||
|
3668 | # [1] (i.e. reusing the store from another repository, just having a | |||
|
3669 | # working copy) | |||
3666 | if b'sharedrepo' in createopts: |
|
3670 | if b'sharedrepo' in createopts: | |
3667 | requirements = set(createopts[b'sharedrepo'].requirements) |
|
3671 | source_requirements = set(createopts[b'sharedrepo'].requirements) | |
|
3672 | ||||
|
3673 | if requirementsmod.SHARESAFE_REQUIREMENT not in source_requirements: | |||
|
3674 | # share to an old school repository, we have to copy the | |||
|
3675 | # requirements and hope for the best. | |||
|
3676 | requirements = source_requirements | |||
|
3677 | else: | |||
|
3678 | # We have control on the working copy only, so "copy" the non | |||
|
3679 | # working copy part over, ignoring previous logic. | |||
|
3680 | to_drop = set() | |||
|
3681 | for req in requirements: | |||
|
3682 | if req in requirementsmod.WORKING_DIR_REQUIREMENTS: | |||
|
3683 | continue | |||
|
3684 | if req in source_requirements: | |||
|
3685 | continue | |||
|
3686 | to_drop.add(req) | |||
|
3687 | requirements -= to_drop | |||
|
3688 | requirements |= source_requirements | |||
|
3689 | ||||
3668 | if createopts.get(b'sharedrelative'): |
|
3690 | if createopts.get(b'sharedrelative'): | |
3669 | requirements.add(requirementsmod.RELATIVE_SHARED_REQUIREMENT) |
|
3691 | requirements.add(requirementsmod.RELATIVE_SHARED_REQUIREMENT) | |
3670 | else: |
|
3692 | else: | |
3671 | requirements.add(requirementsmod.SHARED_REQUIREMENT) |
|
3693 | requirements.add(requirementsmod.SHARED_REQUIREMENT) | |
3672 |
|
3694 | |||
3673 | return requirements |
|
|||
3674 |
|
||||
3675 | return requirements |
|
3695 | return requirements | |
3676 |
|
3696 | |||
3677 |
|
3697 |
@@ -284,3 +284,25 b' Test sharing a repository which was crea' | |||||
284 | $ hg share nostore sharednostore |
|
284 | $ hg share nostore sharednostore | |
285 | abort: cannot create shared repository as source was created with 'format.usestore' config disabled |
|
285 | abort: cannot create shared repository as source was created with 'format.usestore' config disabled | |
286 | [255] |
|
286 | [255] | |
|
287 | ||||
|
288 | Check that (safe) share can control wc-specific format variant at creation time | |||
|
289 | ------------------------------------------------------------------------------- | |||
|
290 | ||||
|
291 | #if no-rust | |||
|
292 | ||||
|
293 | $ cat << EOF >> $HGRCPATH | |||
|
294 | > [storage] | |||
|
295 | > dirstate-v2.slow-path = allow | |||
|
296 | > EOF | |||
|
297 | ||||
|
298 | #endif | |||
|
299 | ||||
|
300 | $ hg init repo-safe-d1 --config format.use-share-safe=yes --config format.exp-rc-dirstate-v2=no | |||
|
301 | $ hg debugformat -R repo-safe-d1 | grep dirstate-v2 | |||
|
302 | dirstate-v2: no | |||
|
303 | ||||
|
304 | $ hg share repo-safe-d1 share-safe-d2 --config format.use-share-safe=yes --config format.exp-rc-dirstate-v2=yes | |||
|
305 | updating working directory | |||
|
306 | 0 files updated, 0 files merged, 0 files removed, 0 files unresolved | |||
|
307 | $ hg debugformat -R share-safe-d2 | grep dirstate-v2 | |||
|
308 | dirstate-v2: yes |
General Comments 0
You need to be logged in to leave comments.
Login now