Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/hgweb/hgweb_mod.py @ 22578:939ce500c92a
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 29 Sep 2014 17:23:38 -0500 |
parents | 4109cc16279e a111e460318a |
children | 89ce95f907bd |
comparison
equal
deleted
inserted
replaced
22575:d7f7f1860f00 | 22578:939ce500c92a |
---|---|
69 r.baseui.setconfig('ui', 'report_untrusted', 'off', 'hgweb') | 69 r.baseui.setconfig('ui', 'report_untrusted', 'off', 'hgweb') |
70 r.ui.setconfig('ui', 'nontty', 'true', 'hgweb') | 70 r.ui.setconfig('ui', 'nontty', 'true', 'hgweb') |
71 r.baseui.setconfig('ui', 'nontty', 'true', 'hgweb') | 71 r.baseui.setconfig('ui', 'nontty', 'true', 'hgweb') |
72 self.repo = r | 72 self.repo = r |
73 hook.redirect(True) | 73 hook.redirect(True) |
74 self.repostate = ((-1, -1), (-1, -1)) | |
74 self.mtime = -1 | 75 self.mtime = -1 |
75 self.size = -1 | |
76 self.reponame = name | 76 self.reponame = name |
77 self.archives = 'zip', 'gz', 'bz2' | 77 self.archives = 'zip', 'gz', 'bz2' |
78 self.stripecount = 1 | 78 self.stripecount = 1 |
79 # a repo owner may set web.templates in .hg/hgrc to get any file | 79 # a repo owner may set web.templates in .hg/hgrc to get any file |
80 # readable by the user running the CGI script | 80 # readable by the user running the CGI script |
105 else: | 105 else: |
106 return repo.filtered('served') | 106 return repo.filtered('served') |
107 | 107 |
108 def refresh(self, request=None): | 108 def refresh(self, request=None): |
109 st = get_stat(self.repo.spath) | 109 st = get_stat(self.repo.spath) |
110 # compare changelog size in addition to mtime to catch | 110 pst = get_stat(self.repo.spath, 'phaseroots') |
111 # rollbacks made less than a second ago | 111 # changelog mtime and size, phaseroots mtime and size |
112 if st.st_mtime != self.mtime or st.st_size != self.size: | 112 repostate = ((st.st_mtime, st.st_size), (pst.st_mtime, pst.st_size)) |
113 # we need to compare file size in addition to mtime to catch | |
114 # changes made less than a second ago | |
115 if repostate != self.repostate: | |
113 r = hg.repository(self.repo.baseui, self.repo.url()) | 116 r = hg.repository(self.repo.baseui, self.repo.url()) |
114 self.repo = self._getview(r) | 117 self.repo = self._getview(r) |
115 self.maxchanges = int(self.config("web", "maxchanges", 10)) | 118 self.maxchanges = int(self.config("web", "maxchanges", 10)) |
116 self.stripecount = int(self.config("web", "stripes", 1)) | 119 self.stripecount = int(self.config("web", "stripes", 1)) |
117 self.maxshortchanges = int(self.config("web", "maxshortchanges", | 120 self.maxshortchanges = int(self.config("web", "maxshortchanges", |
119 self.maxfiles = int(self.config("web", "maxfiles", 10)) | 122 self.maxfiles = int(self.config("web", "maxfiles", 10)) |
120 self.allowpull = self.configbool("web", "allowpull", True) | 123 self.allowpull = self.configbool("web", "allowpull", True) |
121 encoding.encoding = self.config("web", "encoding", | 124 encoding.encoding = self.config("web", "encoding", |
122 encoding.encoding) | 125 encoding.encoding) |
123 # update these last to avoid threads seeing empty settings | 126 # update these last to avoid threads seeing empty settings |
127 self.repostate = repostate | |
128 # mtime is needed for ETag | |
124 self.mtime = st.st_mtime | 129 self.mtime = st.st_mtime |
125 self.size = st.st_size | |
126 if request: | 130 if request: |
127 self.repo.ui.environ = request.env | 131 self.repo.ui.environ = request.env |
128 | 132 |
129 def run(self): | 133 def run(self): |
130 if not os.environ.get('GATEWAY_INTERFACE', '').startswith("CGI/1."): | 134 if not os.environ.get('GATEWAY_INTERFACE', '').startswith("CGI/1."): |