##// END OF EJS Templates
helptext: document exp-sharesafe in internals/requirements.txt...
Pulkit Goyal -
r46056:63eb1b5c default
parent child Browse files
Show More
@@ -1,157 +1,176 b''
1 Repositories contain a file (``.hg/requires``) containing a list of
1 Repositories contain a file (``.hg/requires``) containing a list of
2 features/capabilities that are *required* for clients to interface
2 features/capabilities that are *required* for clients to interface
3 with the repository. This file has been present in Mercurial since
3 with the repository. This file has been present in Mercurial since
4 version 0.9.2 (released December 2006).
4 version 0.9.2 (released December 2006).
5
5
6 One of the first things clients do when opening a repository is read
6 One of the first things clients do when opening a repository is read
7 ``.hg/requires`` and verify that all listed requirements are supported,
7 ``.hg/requires`` and verify that all listed requirements are supported,
8 aborting if not. Requirements are therefore a strong mechanism to
8 aborting if not. Requirements are therefore a strong mechanism to
9 prevent incompatible clients from reading from unknown repository
9 prevent incompatible clients from reading from unknown repository
10 formats or even corrupting them by writing to them.
10 formats or even corrupting them by writing to them.
11
11
12 Extensions may add requirements. When they do this, clients not running
12 Extensions may add requirements. When they do this, clients not running
13 an extension will be unable to read from repositories.
13 an extension will be unable to read from repositories.
14
14
15 The following sections describe the requirements defined by the
15 The following sections describe the requirements defined by the
16 Mercurial core distribution.
16 Mercurial core distribution.
17
17
18 revlogv1
18 revlogv1
19 ========
19 ========
20
20
21 When present, revlogs are version 1 (RevlogNG). RevlogNG was introduced
21 When present, revlogs are version 1 (RevlogNG). RevlogNG was introduced
22 in 2006. The ``revlogv1`` requirement has been enabled by default
22 in 2006. The ``revlogv1`` requirement has been enabled by default
23 since the ``requires`` file was introduced in Mercurial 0.9.2.
23 since the ``requires`` file was introduced in Mercurial 0.9.2.
24
24
25 If this requirement is not present, version 0 revlogs are assumed.
25 If this requirement is not present, version 0 revlogs are assumed.
26
26
27 store
27 store
28 =====
28 =====
29
29
30 The *store* repository layout should be used.
30 The *store* repository layout should be used.
31
31
32 This requirement has been enabled by default since the ``requires`` file
32 This requirement has been enabled by default since the ``requires`` file
33 was introduced in Mercurial 0.9.2.
33 was introduced in Mercurial 0.9.2.
34
34
35 fncache
35 fncache
36 =======
36 =======
37
37
38 The *fncache* repository layout should be used.
38 The *fncache* repository layout should be used.
39
39
40 The *fncache* layout hash encodes filenames with long paths and
40 The *fncache* layout hash encodes filenames with long paths and
41 encodes reserved filenames.
41 encodes reserved filenames.
42
42
43 This requirement is enabled by default when the *store* requirement is
43 This requirement is enabled by default when the *store* requirement is
44 enabled (which is the default behavior). It was introduced in Mercurial
44 enabled (which is the default behavior). It was introduced in Mercurial
45 1.1 (released December 2008).
45 1.1 (released December 2008).
46
46
47 shared
47 shared
48 ======
48 ======
49
49
50 Denotes that the store for a repository is shared from another location
50 Denotes that the store for a repository is shared from another location
51 (defined by the ``.hg/sharedpath`` file).
51 (defined by the ``.hg/sharedpath`` file).
52
52
53 This requirement is set when a repository is created via :hg:`share`.
53 This requirement is set when a repository is created via :hg:`share`.
54
54
55 The requirement was added in Mercurial 1.3 (released July 2009).
55 The requirement was added in Mercurial 1.3 (released July 2009).
56
56
57 relshared
57 relshared
58 =========
58 =========
59
59
60 Derivative of ``shared``; the location of the store is relative to the
60 Derivative of ``shared``; the location of the store is relative to the
61 store of this repository.
61 store of this repository.
62
62
63 This requirement is set when a repository is created via :hg:`share`
63 This requirement is set when a repository is created via :hg:`share`
64 using the ``--relative`` option.
64 using the ``--relative`` option.
65
65
66 The requirement was added in Mercurial 4.2 (released May 2017).
66 The requirement was added in Mercurial 4.2 (released May 2017).
67
67
68 dotencode
68 dotencode
69 =========
69 =========
70
70
71 The *dotencode* repository layout should be used.
71 The *dotencode* repository layout should be used.
72
72
73 The *dotencode* layout encodes the first period or space in filenames
73 The *dotencode* layout encodes the first period or space in filenames
74 to prevent issues on OS X and Windows.
74 to prevent issues on OS X and Windows.
75
75
76 This requirement is enabled by default when the *store* requirement
76 This requirement is enabled by default when the *store* requirement
77 is enabled (which is the default behavior). It was introduced in
77 is enabled (which is the default behavior). It was introduced in
78 Mercurial 1.7 (released November 2010).
78 Mercurial 1.7 (released November 2010).
79
79
80 parentdelta
80 parentdelta
81 ===========
81 ===========
82
82
83 Denotes a revlog delta encoding format that was experimental and
83 Denotes a revlog delta encoding format that was experimental and
84 replaced by *generaldelta*. It should not be seen in the wild because
84 replaced by *generaldelta*. It should not be seen in the wild because
85 it was never enabled by default.
85 it was never enabled by default.
86
86
87 This requirement was added in Mercurial 1.7 and removed in Mercurial
87 This requirement was added in Mercurial 1.7 and removed in Mercurial
88 1.9.
88 1.9.
89
89
90 generaldelta
90 generaldelta
91 ============
91 ============
92
92
93 Revlogs should be created with the *generaldelta* flag enabled. The
93 Revlogs should be created with the *generaldelta* flag enabled. The
94 generaldelta flag will cause deltas to be encoded against a parent
94 generaldelta flag will cause deltas to be encoded against a parent
95 revision instead of the previous revision in the revlog.
95 revision instead of the previous revision in the revlog.
96
96
97 Support for this requirement was added in Mercurial 1.9 (released
97 Support for this requirement was added in Mercurial 1.9 (released
98 July 2011). The requirement was disabled on new repositories by
98 July 2011). The requirement was disabled on new repositories by
99 default until Mercurial 3.7 (released February 2016).
99 default until Mercurial 3.7 (released February 2016).
100
100
101 manifestv2
101 manifestv2
102 ==========
102 ==========
103
103
104 Denotes that version 2 of manifests are being used.
104 Denotes that version 2 of manifests are being used.
105
105
106 Support for this requirement was added in Mercurial 3.4 (released
106 Support for this requirement was added in Mercurial 3.4 (released
107 May 2015). The new format failed to meet expectations and support
107 May 2015). The new format failed to meet expectations and support
108 for the format and requirement were removed in Mercurial 4.6
108 for the format and requirement were removed in Mercurial 4.6
109 (released May 2018) since the feature never graduated frome experiment
109 (released May 2018) since the feature never graduated frome experiment
110 status.
110 status.
111
111
112 treemanifest
112 treemanifest
113 ============
113 ============
114
114
115 Denotes that tree manifests are being used. Tree manifests are
115 Denotes that tree manifests are being used. Tree manifests are
116 one manifest per directory (as opposed to a single flat manifest).
116 one manifest per directory (as opposed to a single flat manifest).
117
117
118 Support for this requirement was added in Mercurial 3.4 (released
118 Support for this requirement was added in Mercurial 3.4 (released
119 August 2015). The requirement is currently experimental and is
119 August 2015). The requirement is currently experimental and is
120 disabled by default.
120 disabled by default.
121
121
122 exp-sparse
122 exp-sparse
123 ==========
123 ==========
124
124
125 The working directory is sparse (only contains a subset of files).
125 The working directory is sparse (only contains a subset of files).
126
126
127 Support for this requirement was added in Mercurial 4.3 (released
127 Support for this requirement was added in Mercurial 4.3 (released
128 August 2017). This requirement and feature are experimental and may
128 August 2017). This requirement and feature are experimental and may
129 disappear in a future Mercurial release. The requirement will only
129 disappear in a future Mercurial release. The requirement will only
130 be present on repositories that have opted in to a sparse working
130 be present on repositories that have opted in to a sparse working
131 directory.
131 directory.
132
132
133 bookmarksinstore
133 bookmarksinstore
134 ==================
134 ==================
135
135
136 Bookmarks are stored in ``.hg/store/`` instead of directly in ``.hg/``
136 Bookmarks are stored in ``.hg/store/`` instead of directly in ``.hg/``
137 where they used to be stored. The active bookmark is still stored
137 where they used to be stored. The active bookmark is still stored
138 directly in ``.hg/``. This makes them always shared by ``hg share``,
138 directly in ``.hg/``. This makes them always shared by ``hg share``,
139 whether or not ``-B`` was passed.
139 whether or not ``-B`` was passed.
140
140
141 Support for this requirement was added in Mercurial 5.1 (released
141 Support for this requirement was added in Mercurial 5.1 (released
142 August 2019). The requirement will only be present on repositories
142 August 2019). The requirement will only be present on repositories
143 that have opted in to this format (by having
143 that have opted in to this format (by having
144 ``format.bookmarks-in-store=true`` set when they were created).
144 ``format.bookmarks-in-store=true`` set when they were created).
145
145
146 persistent-nodemap
146 persistent-nodemap
147 ==================
147 ==================
148
148
149 The `nodemap` index (mapping nodeid to local revision number) is persisted on
149 The `nodemap` index (mapping nodeid to local revision number) is persisted on
150 disk. This provides speed benefit (if the associated native code is used). The
150 disk. This provides speed benefit (if the associated native code is used). The
151 persistent nodemap is only used for two revlogs: the changelog and the
151 persistent nodemap is only used for two revlogs: the changelog and the
152 manifestlog.
152 manifestlog.
153
153
154 Support for this requirement was added in Mercurial 5.5 (released August 2020).
154 Support for this requirement was added in Mercurial 5.5 (released August 2020).
155 Note that as of 5.5, only installations compiled with the Rust extension will
155 Note that as of 5.5, only installations compiled with the Rust extension will
156 benefit from a speedup. The other installations will do the necessary work to
156 benefit from a speedup. The other installations will do the necessary work to
157 keep the index up to date, but will suffer a slowdown.
157 keep the index up to date, but will suffer a slowdown.
158
159 exp-sharesafe
160 =============
161
162 NOTE: This requirement is for internal development only. The semantics are not
163 frozed yet, the feature is experimental. It's not advised to use it for any
164 production repository yet.
165
166 Represents that the repository can be shared safely. Requirements and config of
167 the source repository will be shared.
168 Requirements are stored in ``.hg/store`` instead of directly in ``.hg/`` where
169 they used to be stored. Some working copy related requirements are still stored
170 in ``.hg/``.
171 Shares read the ``.hg/hgrc`` of the source repository.
172
173 Support for this requirement was added in Mercurial 5.6 (released
174 November 2020). The requirement will only be present on repositories that have
175 opted in to this format (by having ``format.exp-share-safe=true`` set when
176 they were created).
General Comments 0
You need to be logged in to leave comments. Login now