Show More
@@ -1752,6 +1752,14 b' The full set of options is:' | |||||
1752 | Whether to require that inbound pushes be transported over SSL to |
|
1752 | Whether to require that inbound pushes be transported over SSL to | |
1753 | prevent password sniffing. Default is True. |
|
1753 | prevent password sniffing. Default is True. | |
1754 |
|
1754 | |||
|
1755 | ``refreshinterval`` | |||
|
1756 | How frequently directory listings re-scan the filesystem for new | |||
|
1757 | repositories, in seconds. This is relevant when wildcards are used | |||
|
1758 | to define paths. Depending on how much filesystem traversal is | |||
|
1759 | required, refreshing may negatively impact performance. | |||
|
1760 | ||||
|
1761 | Default is 20. Values less than or equal to 0 always refresh. | |||
|
1762 | ||||
1755 | ``staticurl`` |
|
1763 | ``staticurl`` | |
1756 | Base URL to use for static files. If unset, static files (e.g. the |
|
1764 | Base URL to use for static files. If unset, static files (e.g. the | |
1757 | hgicon.png favicon) will be served by the CGI script itself. Use |
|
1765 | hgicon.png favicon) will be served by the CGI script itself. Use |
@@ -79,17 +79,23 b' def geturlcgivars(baseurl, port):' | |||||
79 | return name, str(port), path |
|
79 | return name, str(port), path | |
80 |
|
80 | |||
81 | class hgwebdir(object): |
|
81 | class hgwebdir(object): | |
82 | refreshinterval = 20 |
|
|||
83 |
|
||||
84 | def __init__(self, conf, baseui=None): |
|
82 | def __init__(self, conf, baseui=None): | |
85 | self.conf = conf |
|
83 | self.conf = conf | |
86 | self.baseui = baseui |
|
84 | self.baseui = baseui | |
|
85 | self.ui = None | |||
87 | self.lastrefresh = 0 |
|
86 | self.lastrefresh = 0 | |
88 | self.motd = None |
|
87 | self.motd = None | |
89 | self.refresh() |
|
88 | self.refresh() | |
90 |
|
89 | |||
91 | def refresh(self): |
|
90 | def refresh(self): | |
92 | if self.lastrefresh + self.refreshinterval > time.time(): |
|
91 | refreshinterval = 20 | |
|
92 | if self.ui: | |||
|
93 | refreshinterval = self.ui.configint('web', 'refreshinterval', | |||
|
94 | refreshinterval) | |||
|
95 | ||||
|
96 | # refreshinterval <= 0 means to always refresh. | |||
|
97 | if (refreshinterval > 0 and | |||
|
98 | self.lastrefresh + refreshinterval > time.time()): | |||
93 | return |
|
99 | return | |
94 |
|
100 | |||
95 | if self.baseui: |
|
101 | if self.baseui: |
@@ -1245,6 +1245,67 b' rss-log with basedir /foo/' | |||||
1245 | $ get-with-headers.py localhost:$HGPORT2 'a/rss-log' | grep '<guid' |
|
1245 | $ get-with-headers.py localhost:$HGPORT2 'a/rss-log' | grep '<guid' | |
1246 | <guid isPermaLink="true">http://hg.example.com:8080/foo/a/rev/8580ff50825a</guid> |
|
1246 | <guid isPermaLink="true">http://hg.example.com:8080/foo/a/rev/8580ff50825a</guid> | |
1247 |
|
1247 | |||
|
1248 | Path refreshing works as expected | |||
|
1249 | ||||
|
1250 | $ killdaemons.py | |||
|
1251 | $ mkdir $root/refreshtest | |||
|
1252 | $ hg init $root/refreshtest/a | |||
|
1253 | $ cat > paths.conf << EOF | |||
|
1254 | > [paths] | |||
|
1255 | > / = $root/refreshtest/* | |||
|
1256 | > EOF | |||
|
1257 | $ hg serve -p $HGPORT1 -d --pid-file hg.pid --webdir-conf paths.conf | |||
|
1258 | $ cat hg.pid >> $DAEMON_PIDS | |||
|
1259 | ||||
|
1260 | $ get-with-headers.py localhost:$HGPORT1 '?style=raw' | |||
|
1261 | 200 Script output follows | |||
|
1262 | ||||
|
1263 | ||||
|
1264 | /a/ | |||
|
1265 | ||||
|
1266 | ||||
|
1267 | By default refreshing occurs every 20s and a new repo won't be listed | |||
|
1268 | immediately. | |||
|
1269 | ||||
|
1270 | $ hg init $root/refreshtest/b | |||
|
1271 | $ get-with-headers.py localhost:$HGPORT1 '?style=raw' | |||
|
1272 | 200 Script output follows | |||
|
1273 | ||||
|
1274 | ||||
|
1275 | /a/ | |||
|
1276 | ||||
|
1277 | ||||
|
1278 | Restart the server with no refresh interval. New repo should appear | |||
|
1279 | immediately. | |||
|
1280 | ||||
|
1281 | $ killdaemons.py | |||
|
1282 | $ cat > paths.conf << EOF | |||
|
1283 | > [web] | |||
|
1284 | > refreshinterval = -1 | |||
|
1285 | > [paths] | |||
|
1286 | > / = $root/refreshtest/* | |||
|
1287 | > EOF | |||
|
1288 | $ hg serve -p $HGPORT1 -d --pid-file hg.pid --webdir-conf paths.conf | |||
|
1289 | $ cat hg.pid >> $DAEMON_PIDS | |||
|
1290 | ||||
|
1291 | $ get-with-headers.py localhost:$HGPORT1 '?style=raw' | |||
|
1292 | 200 Script output follows | |||
|
1293 | ||||
|
1294 | ||||
|
1295 | /a/ | |||
|
1296 | /b/ | |||
|
1297 | ||||
|
1298 | ||||
|
1299 | $ hg init $root/refreshtest/c | |||
|
1300 | $ get-with-headers.py localhost:$HGPORT1 '?style=raw' | |||
|
1301 | 200 Script output follows | |||
|
1302 | ||||
|
1303 | ||||
|
1304 | /a/ | |||
|
1305 | /b/ | |||
|
1306 | /c/ | |||
|
1307 | ||||
|
1308 | ||||
1248 | paths errors 1 |
|
1309 | paths errors 1 | |
1249 |
|
1310 | |||
1250 | $ cat error-paths-1.log |
|
1311 | $ cat error-paths-1.log |
General Comments 0
You need to be logged in to leave comments.
Login now