annotate MANIFEST.in @ 1998:65cc17ae9649

fix race in localrepo.addchangegroup. localrepo.addchangegroup writes to changelog, then manifest, then normal files. this breaks access ordering. if reader reads changelog while manifest is being written, can find pointers into places in manifest that are not yet written. same can happen for manifest and normal files. fix is to make almost no change to localrepo.addchangegroup. it must to write changelog and manifest data early because it has to read them while writing other files. instead, write changelog and manifest data to temp file that reader cannot see, then append temp data to manifest after all normal files written, finally append temp data to changelog. temp file code is in new appendfile module. can be used in other places with small changes. much smaller race still left. we write all new data in one write call, but reader can maybe see partial update because python or os or filesystem cannot always make write really atomic. file locking no help: slow, not portable, not reliable over nfs. only real safe other plan is write to temp file every time and rename, but performance bad when manifest or changelog is big.
author Vadim Gelfer <vadim.gelfer@gmail.com>
date Fri, 24 Mar 2006 09:08:12 -0800
parents ea8345a7a29d
children 0f17f54333b8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
510265b68bbf Add MANIFEST.in to repo
mpm@selenic.com
parents:
diff changeset
1 include hg
510265b68bbf Add MANIFEST.in to repo
mpm@selenic.com
parents:
diff changeset
2 recursive-include mercurial *.py
954
f179a3a4af3c Add hgwebdir.cgi to MANIFEST.in
mpm@selenic.com
parents: 953
diff changeset
3 include hgweb.cgi hgwebdir.cgi
589
4be4d4580467 [PATCH] bring MANIFEST.in up to date
mpm@selenic.com
parents: 457
diff changeset
4 include hgeditor rewrite-log
807
5e779f96edb0 Include tests (or possibly maps) ending in numbers in MANIFEST, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 806
diff changeset
5 include tests/README tests/run-tests tests/test-*[a-z0-9] tests/*.out
805
ec7107c5d8ad Drop .err files generated by failed tests from the MANIFEST.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 740
diff changeset
6 prune tests/*.err
7
510265b68bbf Add MANIFEST.in to repo
mpm@selenic.com
parents:
diff changeset
7 include *.txt
807
5e779f96edb0 Include tests (or possibly maps) ending in numbers in MANIFEST, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 806
diff changeset
8 include templates/map templates/map-*[a-z0-9]
188
f40273b0ad7b Mercurial 0.5
mpm@selenic.com
parents: 7
diff changeset
9 include templates/*.tmpl
1992
ea8345a7a29d Include templates/static/* in MANIFEST.in so that distutils setup will include them.
Lee Cantey <lcantey@gmail.com>
parents: 1021
diff changeset
10 include templates/static/*
1007
2e8d96e89dfc Include generated documentation in MANIFEST.
Thomas Arendsen Hein <thomas@intevation.de>
parents: 981
diff changeset
11 include doc/README doc/Makefile doc/*.txt doc/*.html doc/*.[0-9]
673
8e518e11f6cf Change MANIFEST.in to recursive-include the contrib/ folder.
Andrew Thompson <andrewkt@aktzero.com>
parents: 589
diff changeset
12 recursive-include contrib *
7
510265b68bbf Add MANIFEST.in to repo
mpm@selenic.com
parents:
diff changeset
13 include README
589
4be4d4580467 [PATCH] bring MANIFEST.in up to date
mpm@selenic.com
parents: 457
diff changeset
14 include CONTRIBUTORS
4be4d4580467 [PATCH] bring MANIFEST.in up to date
mpm@selenic.com
parents: 457
diff changeset
15 include COPYING
1021
a0ce13606208 Add Makefile to the manifest
mpm@selenic.com
parents: 1007
diff changeset
16 include Makefile
589
4be4d4580467 [PATCH] bring MANIFEST.in up to date
mpm@selenic.com
parents: 457
diff changeset
17 include MANIFEST.in