Mercurial > hg
annotate hgwebdir.cgi @ 10230:9f0c7be7c46c
merge with stable
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Mon, 11 Jan 2010 21:45:28 +0100 |
parents | b7d4db95e95a |
children | 08a0f04b56bd |
rev | line source |
---|---|
941 | 1 #!/usr/bin/env python |
2 # | |
3 # An example CGI script to export multiple hgweb repos, edit as necessary | |
4 | |
5244
79279b5583c6
cgi: sys.path.insert should be before importing mercurial
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5197
diff
changeset
|
5 # adjust python path if not a system-wide install: |
79279b5583c6
cgi: sys.path.insert should be before importing mercurial
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5197
diff
changeset
|
6 #import sys |
79279b5583c6
cgi: sys.path.insert should be before importing mercurial
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5197
diff
changeset
|
7 #sys.path.insert(0, "/path/to/python/lib") |
79279b5583c6
cgi: sys.path.insert should be before importing mercurial
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
5197
diff
changeset
|
8 |
5197
55860a45bbf2
Enable demandimport only in scripts, not in importable modules (issue605)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3868
diff
changeset
|
9 # enable importing on demand to reduce startup time |
55860a45bbf2
Enable demandimport only in scripts, not in importable modules (issue605)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3868
diff
changeset
|
10 from mercurial import demandimport; demandimport.enable() |
55860a45bbf2
Enable demandimport only in scripts, not in importable modules (issue605)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3868
diff
changeset
|
11 |
6080
4baad19c4801
hgweb: disable cgitb by default
Maxim Dounin <mdounin@mdounin.ru>
parents:
5995
diff
changeset
|
12 # Uncomment to send python tracebacks to the browser if an error occurs: |
4baad19c4801
hgweb: disable cgitb by default
Maxim Dounin <mdounin@mdounin.ru>
parents:
5995
diff
changeset
|
13 #import cgitb |
4baad19c4801
hgweb: disable cgitb by default
Maxim Dounin <mdounin@mdounin.ru>
parents:
5995
diff
changeset
|
14 #cgitb.enable() |
941 | 15 |
3868
6033d9f28052
hgweb.cgi and hgwebdir.cgi fixes/cleanups for user configurable parts:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3781
diff
changeset
|
16 # If you'd like to serve pages with UTF-8 instead of your default |
6033d9f28052
hgweb.cgi and hgwebdir.cgi fixes/cleanups for user configurable parts:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3781
diff
changeset
|
17 # locale charset, you can do so by uncommenting the following lines. |
6033d9f28052
hgweb.cgi and hgwebdir.cgi fixes/cleanups for user configurable parts:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3781
diff
changeset
|
18 # Note that this will cause your .hgrc files to be interpreted in |
6033d9f28052
hgweb.cgi and hgwebdir.cgi fixes/cleanups for user configurable parts:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3781
diff
changeset
|
19 # UTF-8 and all your repo files to be displayed using UTF-8. |
6033d9f28052
hgweb.cgi and hgwebdir.cgi fixes/cleanups for user configurable parts:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3781
diff
changeset
|
20 # |
6033d9f28052
hgweb.cgi and hgwebdir.cgi fixes/cleanups for user configurable parts:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3781
diff
changeset
|
21 #import os |
6033d9f28052
hgweb.cgi and hgwebdir.cgi fixes/cleanups for user configurable parts:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3781
diff
changeset
|
22 #os.environ["HGENCODING"] = "UTF-8" |
6033d9f28052
hgweb.cgi and hgwebdir.cgi fixes/cleanups for user configurable parts:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3781
diff
changeset
|
23 |
2506
d0db3462d568
This patch make several WSGI related alterations.
Eric Hopper <hopper@omnifarious.org>
parents:
1829
diff
changeset
|
24 from mercurial.hgweb.hgwebdir_mod import hgwebdir |
d0db3462d568
This patch make several WSGI related alterations.
Eric Hopper <hopper@omnifarious.org>
parents:
1829
diff
changeset
|
25 import mercurial.hgweb.wsgicgi as wsgicgi |
941 | 26 |
1829
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
27 # The config file looks like this. You can have paths to individual |
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
28 # repos, collections of repos in a directory tree, or both. |
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
29 # |
941 | 30 # [paths] |
7450
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
31 # virtual/path1 = /real/path1 |
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
32 # virtual/path2 = /real/path2 |
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
33 # virtual/root = /real/root/* |
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
34 # / = /real/root2/* |
7523
e60aaae83323
hgweb: recurse down collections only if ** in [paths]
Benoit Allard <benoit@aeteurope.nl>
parents:
7450
diff
changeset
|
35 # virtual/root2 = /real/root2/** |
1829
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
36 # |
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
37 # [collections] |
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
38 # /prefix/to/strip/off = /root/of/tree/full/of/repos |
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
39 # |
7450
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
40 # paths example: |
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
41 # |
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
42 # * First two lines mount one repository into one virtual path, like |
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
43 # '/real/path1' into 'virtual/path1'. |
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
44 # |
7523
e60aaae83323
hgweb: recurse down collections only if ** in [paths]
Benoit Allard <benoit@aeteurope.nl>
parents:
7450
diff
changeset
|
45 # * The third entry mounts every mercurial repository found in '/real/root' |
e60aaae83323
hgweb: recurse down collections only if ** in [paths]
Benoit Allard <benoit@aeteurope.nl>
parents:
7450
diff
changeset
|
46 # in 'virtual/root'. This format is preferred over the [collections] one, |
7526 | 47 # since using absolute paths as configuration keys is not supported on every |
7523
e60aaae83323
hgweb: recurse down collections only if ** in [paths]
Benoit Allard <benoit@aeteurope.nl>
parents:
7450
diff
changeset
|
48 # platform (especially on Windows). |
7450
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
49 # |
7523
e60aaae83323
hgweb: recurse down collections only if ** in [paths]
Benoit Allard <benoit@aeteurope.nl>
parents:
7450
diff
changeset
|
50 # * The fourth entry is a special case mounting all repositories in |
7450
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
51 # /'real/root2' in the root of the virtual directory. |
79d1bb737c16
hgweb: extend [paths] syntax to match repositories recursively (issue852)
Patrick Mezard <pmezard@gmail.com>
parents:
6142
diff
changeset
|
52 # |
7523
e60aaae83323
hgweb: recurse down collections only if ** in [paths]
Benoit Allard <benoit@aeteurope.nl>
parents:
7450
diff
changeset
|
53 # * The fifth entry recursively finds all repositories under the real root, |
e60aaae83323
hgweb: recurse down collections only if ** in [paths]
Benoit Allard <benoit@aeteurope.nl>
parents:
7450
diff
changeset
|
54 # and mounts them using their relative path (to given real root) under the |
e60aaae83323
hgweb: recurse down collections only if ** in [paths]
Benoit Allard <benoit@aeteurope.nl>
parents:
7450
diff
changeset
|
55 # virtual root. |
e60aaae83323
hgweb: recurse down collections only if ** in [paths]
Benoit Allard <benoit@aeteurope.nl>
parents:
7450
diff
changeset
|
56 # |
1829
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
57 # collections example: say directory tree /foo contains repos /foo/bar, |
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
58 # /foo/quux/baz. Give this config section: |
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
59 # [collections] |
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
60 # /foo = /foo |
b0f6af327fd4
hgwebdir: export collections of repos
Vadim Gelfer <vadim.gelfer@gmail.com>
parents:
1144
diff
changeset
|
61 # Then repos will list as bar and quux/baz. |
3868
6033d9f28052
hgweb.cgi and hgwebdir.cgi fixes/cleanups for user configurable parts:
Thomas Arendsen Hein <thomas@intevation.de>
parents:
3781
diff
changeset
|
62 # |
1144
8a39df05d2c1
Documented passing list or dict instead of config file in hgwebdir.cgi
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1064
diff
changeset
|
63 # Alternatively you can pass a list of ('virtual/path', '/real/path') tuples |
8a39df05d2c1
Documented passing list or dict instead of config file in hgwebdir.cgi
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1064
diff
changeset
|
64 # or use a dictionary with entries like 'virtual/path': '/real/path' |
8a39df05d2c1
Documented passing list or dict instead of config file in hgwebdir.cgi
Thomas Arendsen Hein <thomas@intevation.de>
parents:
1064
diff
changeset
|
65 |
6141
90e5c82a3859
Backed out changeset b913d3aacddc (see issue971/msg5317)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
5995
diff
changeset
|
66 application = hgwebdir('hgweb.config') |
90e5c82a3859
Backed out changeset b913d3aacddc (see issue971/msg5317)
Thomas Arendsen Hein <thomas@intevation.de>
parents:
5995
diff
changeset
|
67 wsgicgi.launch(application) |