author | wenzelm |
Mon, 05 Feb 2024 12:59:34 +0100 | |
changeset 79578 | 4c4d71b00001 |
parent 78479 | b2bb63d11ade |
permissions | -rw-r--r-- |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
1 |
Important notes on Mercurial repository access for Isabelle |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
2 |
=========================================================== |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
3 |
|
54963 | 4 |
Quick start in 30min |
49348 | 5 |
-------------------- |
6 |
||
73188 | 7 |
1. Platform prerequisites: ensure that "curl" and "hg" (Mercurial) are installed |
8 |
||
9 |
(a) Linux: e.g. "sudo apt install curl mercurial |
|
49348 | 10 |
|
73188 | 11 |
(b) macOS: e.g. "brew install mercurial" or download from https://www.mercurial-scm.org |
49348 | 12 |
|
73188 | 13 |
(c) Windows: use Cygwin64 with packages "curl" and "mercurial" (via Cygwin setup-x86_64.exe) |
14 |
||
73514 | 15 |
2. Initial repository clone (bash shell commands): |
49348 | 16 |
|
67744 | 17 |
hg clone https://isabelle.in.tum.de/repos/isabelle |
73514 | 18 |
isabelle/Admin/init |
49348 | 19 |
|
73514 | 20 |
3. Switch repository to particular version (bash shell commands): |
50281
cbba16084784
further update and clarification of the all-important README_REPOSITORY;
wenzelm
parents:
49443
diff
changeset
|
21 |
|
73584 | 22 |
#latest official release |
23 |
isabelle/Admin/init -R |
|
24 |
||
73589 | 25 |
#latest version from repository server |
26 |
isabelle/Admin/init -u |
|
73584 | 27 |
|
73589 | 28 |
#latest version from local history |
29 |
isabelle/Admin/init -u -L |
|
73498 | 30 |
|
31 |
#explicit changeset id or tag (e.g. "Isabelle2021") |
|
73590 | 32 |
isabelle/Admin/init -r 479e9b17090e |
73498 | 33 |
|
73504 | 34 |
4. Run application: |
50575 | 35 |
|
73504 | 36 |
#start Prover IDE and let it build session image |
37 |
isabelle/bin/isabelle jedit -l HOL |
|
38 |
||
73516 | 39 |
#alternative: build session image separately |
73504 | 40 |
isabelle/bin/isabelle build -b HOL |
41 |
||
42 |
5. Build documentation (bash shell commands): |
|
51502 | 43 |
|
73503 | 44 |
isabelle/bin/isabelle build_doc -a |
51502 | 45 |
|
73503 | 46 |
isabelle/bin/isabelle doc system |
51502 | 47 |
|
78479 | 48 |
6. Find historical evidence about good or bad behaviour |
49 |
(e.g. in Isabelle/jEdit): |
|
50 |
||
51 |
cd isabelle |
|
52 |
hg bisect --reset |
|
53 |
Admin/init -R #alternative: "hg up -r REV" |
|
54 |
||
55 |
Admin/init && bin/isabelle jedit |
|
56 |
hg bisect --good |
|
57 |
||
58 |
Admin/init && bin/isabelle jedit |
|
59 |
hg bisect --bad |
|
60 |
||
61 |
... |
|
62 |
||
49348 | 63 |
|
40601 | 64 |
Introduction |
65 |
------------ |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
66 |
|
68378 | 67 |
Mercurial https://www.mercurial-scm.org belongs to source code |
63985 | 68 |
management systems that follow the so-called paradigm of "distributed |
71583 | 69 |
version control". This means plain versioning without the legacy of |
70 |
SVN and the extra complexity of GIT. See also |
|
71 |
https://www.mercurial-scm.org/learn |
|
40601 | 72 |
|
63985 | 73 |
Mercurial offers some flexibility in organizing the flow of changes, |
40601 | 74 |
both between individual developers and designated pull/push areas that |
63985 | 75 |
are shared with others. This additional freedom demands additional |
40601 | 76 |
responsibility to maintain a certain development process that fits to |
77 |
a particular project. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
78 |
|
40601 | 79 |
Regular Mercurial operations are strictly monotonic, where changeset |
51502 | 80 |
transactions are only added, but never deleted or mutated. There are |
81 |
special tools to manipulate repositories via non-monotonic actions |
|
82 |
(such as "rollback" or "strip"), but recovering from gross mistakes |
|
83 |
that have escaped into the public can be hard and embarrassing. It is |
|
84 |
much easier to inspect and amend changesets routinely before pushing. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
85 |
|
40601 | 86 |
The effect of the critical "pull" / "push" operations can be tested in |
87 |
a dry run via "incoming" / "outgoing". The "fetch" extension includes |
|
51502 | 88 |
useful sanity checks beyond raw "pull" / "update" / "merge", although |
89 |
it has lost popularity in recent years. Most other operations are |
|
90 |
local to the user's repository clone. This gives some freedom for |
|
91 |
experimentation without affecting anybody else. |
|
40601 | 92 |
|
93 |
Mercurial provides nice web presentation of incoming changes with a |
|
94 |
digest of log entries; this also includes RSS/Atom news feeds. There |
|
47449 | 95 |
are add-on history browsers such as "hg view" and TortoiseHg. Unlike |
96 |
the default web view, some of these tools help to inspect the semantic |
|
97 |
content of non-trivial merge nodes. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
98 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
99 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
100 |
Initial configuration |
29481 | 101 |
--------------------- |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
102 |
|
51502 | 103 |
The main Isabelle repository can be cloned like this: |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
104 |
|
67744 | 105 |
hg clone https://isabelle.in.tum.de/repos/isabelle |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
106 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
107 |
This will create a local directory "isabelle", unless an alternative |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
108 |
name is specified. The full repository meta-data and history of |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
109 |
changes is in isabelle/.hg; local configuration for this clone can be |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
110 |
added to isabelle/.hg/hgrc, but note that hgrc files are never copied |
40601 | 111 |
by another clone operation. |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
112 |
|
28917 | 113 |
|
28913 | 114 |
There is also $HOME/.hgrc for per-user Mercurial configuration. The |
40601 | 115 |
initial configuration requires at least an entry to identify yourself |
116 |
as follows: |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
117 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
118 |
[ui] |
71583 | 119 |
username = ABC |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
120 |
|
40601 | 121 |
Isabelle contributors are free to choose either a short "login name" |
122 |
(for accounts at TU Munich) or a "full name" -- with or without mail |
|
123 |
address. It is important to stick to this choice once and for all. |
|
124 |
The machine default that Mercurial produces for unspecified |
|
125 |
[ui]username is not appropriate. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
126 |
|
40601 | 127 |
Such configuration can be given in $HOME/.hgrc (for each home |
128 |
directory on each machine) or in .hg/hgrc (for each repository clone). |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
129 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
130 |
|
40601 | 131 |
Here are some further examples for hgrc. This is how to provide |
132 |
default options for common commands: |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
133 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
134 |
[defaults] |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
135 |
log = -l 10 |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
136 |
|
40601 | 137 |
This is how to configure some extension, which is called "graphlog" |
138 |
and provides the "glog" command: |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
139 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
140 |
[extensions] |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
141 |
hgext.graphlog = |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
142 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
143 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
144 |
Shared pull/push access |
29481 | 145 |
----------------------- |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
146 |
|
67744 | 147 |
The entry point https://isabelle.in.tum.de/repos/isabelle is world |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
148 |
readable, both via plain web browsing and the hg client as described |
40601 | 149 |
above. Anybody can produce a clone, change it locally, and then use |
150 |
regular mechanisms of Mercurial to report changes upstream, say via |
|
151 |
mail to someone with write access to that file space. It is also |
|
152 |
quite easy to publish changed clones again on the web, using the |
|
153 |
ad-hoc command "hg serve -v", or the hgweb.cgi or hgwebdir.cgi scripts |
|
154 |
that are included in the Mercurial distribution, and send a "pull |
|
71583 | 155 |
request" to someone else. |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
156 |
|
28913 | 157 |
The downstream/upstream mode of operation is quite common in the |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
158 |
distributed version control community, and works well for occasional |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
159 |
changes produced by anybody out there. Of course, upstream |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
160 |
maintainers need to review and moderate changes being proposed, before |
40601 | 161 |
pushing anything onto the official Isabelle repository at TUM. Direct |
162 |
pushes are also reviewed routinely in a post-hoc fashion; everybody |
|
163 |
hooked on the main repository is called to keep an eye on incoming |
|
51502 | 164 |
changes. In any case, changesets need to be understandable, both at |
165 |
the time of writing and many years later. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
166 |
|
40601 | 167 |
Push access to the Isabelle repository requires an account at TUM, |
51072 | 168 |
with properly configured ssh to isabelle-server.in.tum.de. You also |
169 |
need to be a member of the "isabelle" Unix group. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
170 |
|
28913 | 171 |
Sharing a locally modified clone then works as follows, using your |
172 |
user name instead of "wenzelm": |
|
173 |
||
51072 | 174 |
hg out ssh://wenzelm@isabelle-server.in.tum.de//home/isabelle-repository/repos/isabelle |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
175 |
|
28913 | 176 |
In fact, the "out" or "outgoing" command performs only a dry run: it |
177 |
displays the changesets that would get published. An actual "push", |
|
178 |
with a lasting effect on the Isabelle repository, works like this: |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
179 |
|
51072 | 180 |
hg push ssh://wenzelm@isabelle-server.in.tum.de//home/isabelle-repository/repos/isabelle |
28913 | 181 |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
182 |
|
40601 | 183 |
Default paths for push and pull can be configured in |
184 |
isabelle/.hg/hgrc, for example: |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
185 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
186 |
[paths] |
51072 | 187 |
default = ssh://wenzelm@isabelle-server.in.tum.de//home/isabelle-repository/repos/isabelle |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
188 |
|
28913 | 189 |
Now "hg pull" or "hg push" will use that shared file space, unless a |
190 |
different URL is specified explicitly. |
|
191 |
||
192 |
When cloning a repository, the default path is set to the initial |
|
193 |
source URL. So we could have cloned via that ssh URL in the first |
|
194 |
place, to get exactly to the same point: |
|
195 |
||
51072 | 196 |
hg clone ssh://wenzelm@isabelle-server.in.tum.de//home/isabelle-repository/repos/isabelle |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
197 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
198 |
|
40601 | 199 |
Simple merges |
200 |
------------- |
|
30182 | 201 |
|
202 |
The main idea of Mercurial is to let individual users produce |
|
203 |
independent branches of development first, but merge with others |
|
204 |
frequently. The basic hg merge operation is more general than |
|
205 |
required for the mode of operation with a shared pull/push area. The |
|
40601 | 206 |
"fetch" extension accommodates this case nicely, automating trivial |
30182 | 207 |
merges and requiring manual intervention for actual conflicts only. |
208 |
||
40601 | 209 |
The fetch extension can be configured via $HOME/.hgrc like this: |
30182 | 210 |
|
211 |
[extensions] |
|
212 |
hgext.fetch = |
|
213 |
||
214 |
[defaults] |
|
215 |
fetch = -m "merged" |
|
216 |
||
40601 | 217 |
To keep merges semantically trivial and prevent genuine merge |
218 |
conflicts or lost updates, it is essential to observe to following |
|
219 |
general discipline wrt. the public Isabelle push area: |
|
220 |
||
221 |
* Before editing, pull or fetch the latest version. |
|
222 |
||
223 |
* Accumulate private commits for a maximum of 1-3 days. |
|
224 |
||
225 |
* Start publishing again by pull or fetch, which normally produces |
|
226 |
local merges. |
|
227 |
||
50281
cbba16084784
further update and clarification of the all-important README_REPOSITORY;
wenzelm
parents:
49443
diff
changeset
|
228 |
* Test the merged result, e.g. like this: |
cbba16084784
further update and clarification of the all-important README_REPOSITORY;
wenzelm
parents:
49443
diff
changeset
|
229 |
|
cbba16084784
further update and clarification of the all-important README_REPOSITORY;
wenzelm
parents:
49443
diff
changeset
|
230 |
isabelle build -a |
cbba16084784
further update and clarification of the all-important README_REPOSITORY;
wenzelm
parents:
49443
diff
changeset
|
231 |
|
cbba16084784
further update and clarification of the all-important README_REPOSITORY;
wenzelm
parents:
49443
diff
changeset
|
232 |
* Push back in real time. |
40601 | 233 |
|
234 |
Piling private changes and public merges longer than 0.5-2 hours is |
|
235 |
apt to produce some mess when pushing eventually! |
|
30182 | 236 |
|
50281
cbba16084784
further update and clarification of the all-important README_REPOSITORY;
wenzelm
parents:
49443
diff
changeset
|
237 |
The pull-test-push cycle should not be repeated too fast, to avoid |
cbba16084784
further update and clarification of the all-important README_REPOSITORY;
wenzelm
parents:
49443
diff
changeset
|
238 |
delaying others from doing the same concurrently. |
cbba16084784
further update and clarification of the all-important README_REPOSITORY;
wenzelm
parents:
49443
diff
changeset
|
239 |
|
30182 | 240 |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
241 |
Content discipline |
29481 | 242 |
------------------ |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
243 |
|
40601 | 244 |
The following principles should be kept in mind when producing |
245 |
changesets that are meant to be published at some point. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
246 |
|
40601 | 247 |
* The author of changes needs to be properly identified, using |
248 |
[ui]username configuration as described above. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
249 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
250 |
While Mercurial also provides means for signed changesets, we want |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
251 |
to keep things simple and trust that users specify their identity |
40601 | 252 |
correctly (and uniquely). |
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
253 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
254 |
* The history of sources is an integral part of the sources |
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
255 |
themselves. This means that private experiments and branches |
40601 | 256 |
should not be published by accident. Named branches are not |
257 |
allowed on the public version. Note that old SVN-style branching |
|
258 |
is replaced by regular repository clones in Mercurial. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
259 |
|
40601 | 260 |
Exchanging local experiments with some other users can be done |
261 |
directly on peer-to-peer basis, without affecting the central |
|
262 |
pull/push area. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
263 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
264 |
* Log messages are an integral part of the history of sources. |
40601 | 265 |
Other people will have to inspect them routinely, to understand |
266 |
why things have been done in a certain way at some point. |
|
267 |
||
268 |
Authors of log entries should be aware that published changes are |
|
269 |
actually read. The main point is not to announce novelties, but |
|
270 |
to describe faithfully what has been done, and provide some clues |
|
271 |
about the motivation behind it. The main recipient is someone who |
|
272 |
needs to understand the change in the distant future to isolate |
|
51502 | 273 |
problems. Sometimes it is helpful to reference past changes |
274 |
formally via changeset ids in the log entry. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
275 |
|
40601 | 276 |
* The standard changelog entry format of the Isabelle repository |
51502 | 277 |
admits several (somehow related) items to be rolled into one |
40601 | 278 |
changeset. Each item is then described on a separate line that |
279 |
may become longer as screen line and is terminated by punctuation. |
|
280 |
These lines are roughly ordered by importance. |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
281 |
|
40601 | 282 |
This format conforms to established Isabelle tradition. In |
283 |
contrast, the default of Mercurial prefers a single headline |
|
284 |
followed by a long body text. The reason for that is a somewhat |
|
285 |
different development model of typical "distributed" projects, |
|
286 |
where external changes pass through a hierarchy of reviewers and |
|
287 |
maintainers, until they end up in some authoritative repository. |
|
288 |
Isabelle changesets can be more spontaneous, growing from the |
|
289 |
bottom-up. |
|
290 |
||
67744 | 291 |
The web style of https://isabelle.in.tum.de/repos/isabelle |
40601 | 292 |
accommodates the Isabelle changelog format. Note that multiple |
293 |
lines will sometimes display as a single paragraph in HTML, so |
|
294 |
some terminating punctuation is required. Do not squeeze multiple |
|
295 |
items on the same line in the original text! |
|
28907
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
296 |
|
1a470f95ef18
Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff
changeset
|
297 |
|
51502 | 298 |
Testing of changes (before push) |
299 |
-------------------------------- |
|
48497
ba61aceaa18a
some updates on "Building a repository version of Isabelle";
wenzelm
parents:
47449
diff
changeset
|
300 |
|
51502 | 301 |
The integrity of the standard pull/push area of Isabelle needs the be |
302 |
preserved at all time. This means that a complete test with default |
|
303 |
configuration needs to be finished successfully before push. If the |
|
304 |
preparation of the push involves a pull/merge phase, its result needs |
|
305 |
to covered by the test as well. |
|
28908 | 306 |
|
51502 | 307 |
There are several possibilities to perform the test, e.g. using the |
308 |
Isabelle testboard at TUM. In contrast, the subsequent command-line |
|
309 |
examples are for tests on the local machine: |
|
48844 | 310 |
|
51502 | 311 |
./bin/isabelle build -a #regular test |
48844 | 312 |
|
63985 | 313 |
./bin/isabelle build -a -o document=pdf #test with document preparation (optional) |
48844 | 314 |
|
51502 | 315 |
./bin/isabelle build -a -j2 -o threads=4 #test on multiple cores (example) |
48497
ba61aceaa18a
some updates on "Building a repository version of Isabelle";
wenzelm
parents:
47449
diff
changeset
|
316 |
|
51502 | 317 |
See also the chapter on Isabelle sessions and build management in the |
66753 | 318 |
"system" manual. The build option -S is particularly useful for quick |
319 |
tests of individual commits, e.g. for each step of a longer chain of |
|
320 |
changes, but the final push always requires a full test as above! |
|
48986
037d32448e29
update on "isabelle build" and "isabelle build_doc";
wenzelm
parents:
48855
diff
changeset
|
321 |
|
51502 | 322 |
Note that implicit dependencies on Isabelle components are specified |
323 |
via catalog files in $ISABELLE_HOME/Admin/components/ as part of the |
|
324 |
Mercurial history. This allows to bisect over a range of Isabelle |
|
325 |
versions while references to the contributing components change |
|
326 |
accordingly. Recall that "isabelle components -a" updates the local |
|
327 |
component store monotonically according to that information, and thus |
|
328 |
resolves missing components. |