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