README_REPOSITORY
author Thomas Lindae <thomas.lindae@in.tum.de>
Thu, 18 Jul 2024 23:02:49 +0200
changeset 81082 132080f5d15c
parent 78479 b2bb63d11ade
permissions -rw-r--r--
vscode: further adjusted default settings and wordPattern for consistent completion popups; for some reason wordPattern must be set to match (almost) everything, otherwise completions only pop up every other character, and then we must disable wordBasedSuggestions or it will suggest whole lines out of the document;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
wenzelm
parents: 53359
diff changeset
     4
Quick start in 30min
49348
01d2d01bf9d1 instructions for quick start in 20min;
wenzelm
parents: 48986
diff changeset
     5
--------------------
01d2d01bf9d1 instructions for quick start in 20min;
wenzelm
parents: 48986
diff changeset
     6
73188
wenzelm
parents: 71583
diff changeset
     7
1. Platform prerequisites: ensure that "curl" and "hg" (Mercurial) are installed
wenzelm
parents: 71583
diff changeset
     8
wenzelm
parents: 71583
diff changeset
     9
  (a) Linux: e.g. "sudo apt install curl mercurial
49348
01d2d01bf9d1 instructions for quick start in 20min;
wenzelm
parents: 48986
diff changeset
    10
73188
wenzelm
parents: 71583
diff changeset
    11
  (b) macOS: e.g. "brew install mercurial" or download from https://www.mercurial-scm.org
49348
01d2d01bf9d1 instructions for quick start in 20min;
wenzelm
parents: 48986
diff changeset
    12
73188
wenzelm
parents: 71583
diff changeset
    13
  (c) Windows: use Cygwin64 with packages "curl" and "mercurial" (via Cygwin setup-x86_64.exe)
wenzelm
parents: 71583
diff changeset
    14
73514
01acd0eb29ce clarified name;
wenzelm
parents: 73504
diff changeset
    15
2. Initial repository clone (bash shell commands):
49348
01d2d01bf9d1 instructions for quick start in 20min;
wenzelm
parents: 48986
diff changeset
    16
67744
5c781dcd5864 prefer https;
wenzelm
parents: 66763
diff changeset
    17
    hg clone https://isabelle.in.tum.de/repos/isabelle
73514
01acd0eb29ce clarified name;
wenzelm
parents: 73504
diff changeset
    18
    isabelle/Admin/init
49348
01d2d01bf9d1 instructions for quick start in 20min;
wenzelm
parents: 48986
diff changeset
    19
73514
01acd0eb29ce clarified name;
wenzelm
parents: 73504
diff changeset
    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
1d4c9fa00821 clarified options;
wenzelm
parents: 73516
diff changeset
    22
    #latest official release
1d4c9fa00821 clarified options;
wenzelm
parents: 73516
diff changeset
    23
    isabelle/Admin/init -R
1d4c9fa00821 clarified options;
wenzelm
parents: 73516
diff changeset
    24
73589
479e9b17090e clarified options (again);
wenzelm
parents: 73585
diff changeset
    25
    #latest version from repository server
479e9b17090e clarified options (again);
wenzelm
parents: 73585
diff changeset
    26
    isabelle/Admin/init -u
73584
1d4c9fa00821 clarified options;
wenzelm
parents: 73516
diff changeset
    27
73589
479e9b17090e clarified options (again);
wenzelm
parents: 73585
diff changeset
    28
    #latest version from local history
479e9b17090e clarified options (again);
wenzelm
parents: 73585
diff changeset
    29
    isabelle/Admin/init -u -L
73498
f5e9ade80579 clarified;
wenzelm
parents: 73487
diff changeset
    30
f5e9ade80579 clarified;
wenzelm
parents: 73487
diff changeset
    31
    #explicit changeset id or tag (e.g. "Isabelle2021")
73590
1aa9ef7a3eaf updated example;
wenzelm
parents: 73589
diff changeset
    32
    isabelle/Admin/init -r 479e9b17090e
73498
f5e9ade80579 clarified;
wenzelm
parents: 73487
diff changeset
    33
73504
c259c7a42ac3 more options: build is part of default setup;
wenzelm
parents: 73503
diff changeset
    34
4. Run application:
50575
ae1da46022d1 prefer implicit build_dialog of isabelle jedit;
wenzelm
parents: 50457
diff changeset
    35
73504
c259c7a42ac3 more options: build is part of default setup;
wenzelm
parents: 73503
diff changeset
    36
    #start Prover IDE and let it build session image
c259c7a42ac3 more options: build is part of default setup;
wenzelm
parents: 73503
diff changeset
    37
    isabelle/bin/isabelle jedit -l HOL
c259c7a42ac3 more options: build is part of default setup;
wenzelm
parents: 73503
diff changeset
    38
73516
wenzelm
parents: 73514
diff changeset
    39
    #alternative: build session image separately
73504
c259c7a42ac3 more options: build is part of default setup;
wenzelm
parents: 73503
diff changeset
    40
    isabelle/bin/isabelle build -b HOL
c259c7a42ac3 more options: build is part of default setup;
wenzelm
parents: 73503
diff changeset
    41
c259c7a42ac3 more options: build is part of default setup;
wenzelm
parents: 73503
diff changeset
    42
5. Build documentation (bash shell commands):
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    43
73503
eda1d95ef538 misc tuning and clarification;
wenzelm
parents: 73499
diff changeset
    44
    isabelle/bin/isabelle build_doc -a
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    45
73503
eda1d95ef538 misc tuning and clarification;
wenzelm
parents: 73499
diff changeset
    46
    isabelle/bin/isabelle doc system
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    47
78479
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    48
6. Find historical evidence about good or bad behaviour
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    49
   (e.g. in Isabelle/jEdit):
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    50
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    51
    cd isabelle
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    52
    hg bisect --reset
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    53
    Admin/init -R   #alternative: "hg up -r REV"
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    54
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    55
    Admin/init && bin/isabelle jedit
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    56
    hg bisect --good
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    57
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    58
    Admin/init && bin/isabelle jedit
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    59
    hg bisect --bad
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    60
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    61
    ...
b2bb63d11ade hints on "hg bisect";
wenzelm
parents: 73590
diff changeset
    62
49348
01d2d01bf9d1 instructions for quick start in 20min;
wenzelm
parents: 48986
diff changeset
    63
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    64
Introduction
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    65
------------
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
    66
68378
22680a3f8346 updated URLs;
wenzelm
parents: 67744
diff changeset
    67
Mercurial https://www.mercurial-scm.org belongs to source code
63985
wenzelm
parents: 63490
diff changeset
    68
management systems that follow the so-called paradigm of "distributed
71583
wenzelm
parents: 68378
diff changeset
    69
version control".  This means plain versioning without the legacy of
wenzelm
parents: 68378
diff changeset
    70
SVN and the extra complexity of GIT.  See also
wenzelm
parents: 68378
diff changeset
    71
https://www.mercurial-scm.org/learn
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    72
63985
wenzelm
parents: 63490
diff changeset
    73
Mercurial offers some flexibility in organizing the flow of changes,
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    74
both between individual developers and designated pull/push areas that
63985
wenzelm
parents: 63490
diff changeset
    75
are shared with others.  This additional freedom demands additional
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    76
responsibility to maintain a certain development process that fits to
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    77
a particular project.
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
    78
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    79
Regular Mercurial operations are strictly monotonic, where changeset
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    80
transactions are only added, but never deleted or mutated.  There are
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    81
special tools to manipulate repositories via non-monotonic actions
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    82
(such as "rollback" or "strip"), but recovering from gross mistakes
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    83
that have escaped into the public can be hard and embarrassing.  It is
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    86
The effect of the critical "pull" / "push" operations can be tested in
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    87
a dry run via "incoming" / "outgoing".  The "fetch" extension includes
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    88
useful sanity checks beyond raw "pull" / "update" / "merge", although
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    89
it has lost popularity in recent years.  Most other operations are
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    90
local to the user's repository clone.  This gives some freedom for
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
    91
experimentation without affecting anybody else.
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    92
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    93
Mercurial provides nice web presentation of incoming changes with a
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
    94
digest of log entries; this also includes RSS/Atom news feeds.  There
47449
5e1482296b12 misc tuning;
wenzelm
parents: 40601
diff changeset
    95
are add-on history browsers such as "hg view" and TortoiseHg.  Unlike
5e1482296b12 misc tuning;
wenzelm
parents: 40601
diff changeset
    96
the default web view, some of these tools help to inspect the semantic
5e1482296b12 misc tuning;
wenzelm
parents: 40601
diff changeset
    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
3e8420c1124a tuned ASCII art;
wenzelm
parents: 28918
diff changeset
   101
---------------------
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
   102
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   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
5c781dcd5864 prefer https;
wenzelm
parents: 66763
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   111
by another clone operation.
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
   112
28917
wenzelm
parents: 28913
diff changeset
   113
28913
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   114
There is also $HOME/.hgrc for per-user Mercurial configuration.  The
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   115
initial configuration requires at least an entry to identify yourself
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
wenzelm
parents: 68378
diff changeset
   119
  username = ABC
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
   120
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   121
Isabelle contributors are free to choose either a short "login name"
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   122
(for accounts at TU Munich) or a "full name" -- with or without mail
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   123
address.  It is important to stick to this choice once and for all.
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   124
The machine default that Mercurial produces for unspecified
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   125
[ui]username is not appropriate.
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
   126
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   127
Such configuration can be given in $HOME/.hgrc (for each home
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   131
Here are some further examples for hgrc.  This is how to provide
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   137
This is how to configure some extension, which is called "graphlog"
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
3e8420c1124a tuned ASCII art;
wenzelm
parents: 28918
diff changeset
   145
-----------------------
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
   146
67744
5c781dcd5864 prefer https;
wenzelm
parents: 66763
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   149
above.  Anybody can produce a clone, change it locally, and then use
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   150
regular mechanisms of Mercurial to report changes upstream, say via
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   151
mail to someone with write access to that file space.  It is also
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   152
quite easy to publish changed clones again on the web, using the
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   153
ad-hoc command "hg serve -v", or the hgweb.cgi or hgwebdir.cgi scripts
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   154
that are included in the Mercurial distribution, and send a "pull
71583
wenzelm
parents: 68378
diff changeset
   155
request" to someone else.
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
   156
28913
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   161
pushing anything onto the official Isabelle repository at TUM.  Direct
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   162
pushes are also reviewed routinely in a post-hoc fashion; everybody
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   163
hooked on the main repository is called to keep an eye on incoming
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   164
changes.  In any case, changesets need to be understandable, both at
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   167
Push access to the Isabelle repository requires an account at TUM,
51072
0351cc781a26 standardized isabelle-server.in.tum.de;
wenzelm
parents: 50654
diff changeset
   168
with properly configured ssh to isabelle-server.in.tum.de.  You also
0351cc781a26 standardized isabelle-server.in.tum.de;
wenzelm
parents: 50654
diff changeset
   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
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   171
Sharing a locally modified clone then works as follows, using your
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   172
user name instead of "wenzelm":
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   173
51072
0351cc781a26 standardized isabelle-server.in.tum.de;
wenzelm
parents: 50654
diff changeset
   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
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   176
In fact, the "out" or "outgoing" command performs only a dry run: it
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   177
displays the changesets that would get published.  An actual "push",
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   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
0351cc781a26 standardized isabelle-server.in.tum.de;
wenzelm
parents: 50654
diff changeset
   180
  hg push ssh://wenzelm@isabelle-server.in.tum.de//home/isabelle-repository/repos/isabelle
28913
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   181
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
   182
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   183
Default paths for push and pull can be configured in
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
0351cc781a26 standardized isabelle-server.in.tum.de;
wenzelm
parents: 50654
diff changeset
   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
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   189
Now "hg pull" or "hg push" will use that shared file space, unless a
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   190
different URL is specified explicitly.
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   191
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   192
When cloning a repository, the default path is set to the initial
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   193
source URL.  So we could have cloned via that ssh URL in the first
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   194
place, to get exactly to the same point:
86ed1c86e0ef misc tuning and clarification;
wenzelm
parents: 28910
diff changeset
   195
51072
0351cc781a26 standardized isabelle-server.in.tum.de;
wenzelm
parents: 50654
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   199
Simple merges
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   200
-------------
30182
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   201
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   202
The main idea of Mercurial is to let individual users produce
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   203
independent branches of development first, but merge with others
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   204
frequently.  The basic hg merge operation is more general than
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   205
required for the mode of operation with a shared pull/push area.  The
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   206
"fetch" extension accommodates this case nicely, automating trivial
30182
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   207
merges and requiring manual intervention for actual conflicts only.
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   208
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   209
The fetch extension can be configured via $HOME/.hgrc like this:
30182
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   210
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   211
  [extensions]
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   212
  hgext.fetch =
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   213
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   214
  [defaults]
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   215
  fetch = -m "merged"
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   216
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   217
To keep merges semantically trivial and prevent genuine merge
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   218
conflicts or lost updates, it is essential to observe to following
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   219
general discipline wrt. the public Isabelle push area:
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   220
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   221
  * Before editing, pull or fetch the latest version.
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   222
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   223
  * Accumulate private commits for a maximum of 1-3 days.
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   224
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   225
  * Start publishing again by pull or fetch, which normally produces
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   226
    local merges.
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   233
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   234
Piling private changes and public merges longer than 0.5-2 hours is
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   235
apt to produce some mess when pushing eventually!
30182
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   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
db768c888dfa minor update of Mercurial HOWTO;
wenzelm
parents: 29481
diff changeset
   240
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
   241
Content discipline
29481
3e8420c1124a tuned ASCII art;
wenzelm
parents: 28918
diff changeset
   242
------------------
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
   243
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   244
The following principles should be kept in mind when producing
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   247
  * The author of changes needs to be properly identified, using
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   256
    should not be published by accident.  Named branches are not
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   257
    allowed on the public version.  Note that old SVN-style branching
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   260
    Exchanging local experiments with some other users can be done
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   261
    directly on peer-to-peer basis, without affecting the central
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   265
    Other people will have to inspect them routinely, to understand
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   266
    why things have been done in a certain way at some point.
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   267
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   268
    Authors of log entries should be aware that published changes are
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   269
    actually read.  The main point is not to announce novelties, but
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   270
    to describe faithfully what has been done, and provide some clues
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   271
    about the motivation behind it.  The main recipient is someone who
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   272
    needs to understand the change in the distant future to isolate
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   273
    problems.  Sometimes it is helpful to reference past changes
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   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
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   276
  * The standard changelog entry format of the Isabelle repository
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   277
    admits several (somehow related) items to be rolled into one
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   278
    changeset.  Each item is then described on a separate line that
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   279
    may become longer as screen line and is terminated by punctuation.
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   280
    These lines are roughly ordered by importance.
28907
1a470f95ef18 Important notes on Mercurial repository access for Isabelle.
wenzelm
parents:
diff changeset
   281
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   282
    This format conforms to established Isabelle tradition.  In
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   283
    contrast, the default of Mercurial prefers a single headline
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   284
    followed by a long body text.  The reason for that is a somewhat
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   285
    different development model of typical "distributed" projects,
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   286
    where external changes pass through a hierarchy of reviewers and
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   287
    maintainers, until they end up in some authoritative repository.
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   288
    Isabelle changesets can be more spontaneous, growing from the
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   289
    bottom-up.
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   290
67744
5c781dcd5864 prefer https;
wenzelm
parents: 66763
diff changeset
   291
    The web style of https://isabelle.in.tum.de/repos/isabelle
40601
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   292
    accommodates the Isabelle changelog format.  Note that multiple
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   293
    lines will sometimes display as a single paragraph in HTML, so
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   294
    some terminating punctuation is required.  Do not squeeze multiple
021278fdd0a8 some updates after 2 years of Mercurial usage;
wenzelm
parents: 36858
diff changeset
   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
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   298
Testing of changes (before push)
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   299
--------------------------------
48497
ba61aceaa18a some updates on "Building a repository version of Isabelle";
wenzelm
parents: 47449
diff changeset
   300
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   301
The integrity of the standard pull/push area of Isabelle needs the be
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   302
preserved at all time.  This means that a complete test with default
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   303
configuration needs to be finished successfully before push.  If the
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   304
preparation of the push involves a pull/merge phase, its result needs
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   305
to covered by the test as well.
28908
4571302e1594 further notes;
wenzelm
parents: 28907
diff changeset
   306
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   307
There are several possibilities to perform the test, e.g. using the
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   308
Isabelle testboard at TUM.  In contrast, the subsequent command-line
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   309
examples are for tests on the local machine:
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48497
diff changeset
   310
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   311
  ./bin/isabelle build -a  #regular test
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48497
diff changeset
   312
63985
wenzelm
parents: 63490
diff changeset
   313
  ./bin/isabelle build -a -o document=pdf  #test with document preparation (optional)
48844
6408fb6f7d81 some explanations on isabelle components;
wenzelm
parents: 48497
diff changeset
   314
51502
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   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
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   317
See also the chapter on Isabelle sessions and build management in the
66753
f7759beab4f2 more documentation;
wenzelm
parents: 63985
diff changeset
   318
"system" manual. The build option -S is particularly useful for quick
f7759beab4f2 more documentation;
wenzelm
parents: 63985
diff changeset
   319
tests of individual commits, e.g. for each step of a longer chain of
f7759beab4f2 more documentation;
wenzelm
parents: 63985
diff changeset
   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
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   322
Note that implicit dependencies on Isabelle components are specified
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   323
via catalog files in $ISABELLE_HOME/Admin/components/ as part of the
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   324
Mercurial history.  This allows to bisect over a range of Isabelle
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   325
versions while references to the contributing components change
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   326
accordingly.  Recall that "isabelle components -a" updates the local
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   327
component store monotonically according to that information, and thus
ed5d96d01b2f more "quick start" hints;
wenzelm
parents: 51072
diff changeset
   328
resolves missing components.