Notes on central Isabelle repository
====================================
* direct file-system access (locally or remotely via ssh)
* permissions via dedicated Unix group "isabelle"
* See http://mercurial.selenic.com/wiki/RequiresFile on physical format, with
conservative requirements for Mercurial 1.3 as lowest common denominator:
revlogv1
store
fncache
* See http://mercurial.selenic.com/wiki/MultipleCommitters for old-fashioned
CVS-like multiple committers configuration, "The filesystem method".
A fresh multi-user clone is initialized like this:
hg --config format.dotencode=0 init isabelle-clone
cd isabelle-clone
chgrp -R isabelle .hg
chmod g+s .hg .hg/store
mkdir .hg/strip-backup ## Not to be used under normal circumstances!
chmod -R g+w .hg
Now isabelle-clone is ready for push of repository data (without making
a working directory).
* Addressing technical issues: according to
http://mercurial.selenic.com/wiki/PublishingRepositories our shared disk
configuration (after regular ssh login) is characterized as follows:
Advantages: can use existing setup
Disadvantages: generally restricted to intranets, not generally
recommended due to general issues with network filesystem reliability
Due to NFS instabilities of unknown origin at TUM, drop-outs have
happened before. The following measures of last resort can be applied:
(a) "hg verify" to find offending changesets
"hg strip REV" to remove parts of the public history by vivisection
(b) fresh clone from known-good source as explained above
Note that any such non-monotonic changes on the central push area work
under the assumption of sequential single-user mode!!
See also http://mercurial.selenic.com/wiki/RepositoryCorruption for
further background information.