Mercurial > hg
changeset 22578:939ce500c92a
merge with stable
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 29 Sep 2014 17:23:38 -0500 |
parents | d7f7f1860f00 (current diff) a111e460318a (diff) |
children | 36a940d82f88 |
files | mercurial/commands.py mercurial/hgweb/hgweb_mod.py tests/test-hgweb.t |
diffstat | 4 files changed, 57 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/commands.py Fri Sep 26 02:19:48 2014 +0200 +++ b/mercurial/commands.py Mon Sep 29 17:23:38 2014 -0500 @@ -4385,7 +4385,7 @@ hg log -T list - - check if a given changeset is included is a tagged release:: + - check if a given changeset is included in a tagged release:: hg log -r "a21ccf and ancestor(1.9)"
--- a/mercurial/hgweb/common.py Fri Sep 26 02:19:48 2014 +0200 +++ b/mercurial/hgweb/common.py Mon Sep 29 17:23:38 2014 -0500 @@ -112,9 +112,9 @@ def statusmessage(code, message=None): return '%d %s' % (code, message or _statusmessage(code)) -def get_stat(spath): - """stat changelog if it exists, spath otherwise""" - cl_path = os.path.join(spath, "00changelog.i") +def get_stat(spath, fn="00changelog.i"): + """stat fn (00changelog.i by default) if it exists, spath otherwise""" + cl_path = os.path.join(spath, fn) if os.path.exists(cl_path): return os.stat(cl_path) else:
--- a/mercurial/hgweb/hgweb_mod.py Fri Sep 26 02:19:48 2014 +0200 +++ b/mercurial/hgweb/hgweb_mod.py Mon Sep 29 17:23:38 2014 -0500 @@ -71,8 +71,8 @@ r.baseui.setconfig('ui', 'nontty', 'true', 'hgweb') self.repo = r hook.redirect(True) + self.repostate = ((-1, -1), (-1, -1)) self.mtime = -1 - self.size = -1 self.reponame = name self.archives = 'zip', 'gz', 'bz2' self.stripecount = 1 @@ -107,9 +107,12 @@ def refresh(self, request=None): st = get_stat(self.repo.spath) - # compare changelog size in addition to mtime to catch - # rollbacks made less than a second ago - if st.st_mtime != self.mtime or st.st_size != self.size: + pst = get_stat(self.repo.spath, 'phaseroots') + # changelog mtime and size, phaseroots mtime and size + repostate = ((st.st_mtime, st.st_size), (pst.st_mtime, pst.st_size)) + # we need to compare file size in addition to mtime to catch + # changes made less than a second ago + if repostate != self.repostate: r = hg.repository(self.repo.baseui, self.repo.url()) self.repo = self._getview(r) self.maxchanges = int(self.config("web", "maxchanges", 10)) @@ -121,8 +124,9 @@ encoding.encoding = self.config("web", "encoding", encoding.encoding) # update these last to avoid threads seeing empty settings + self.repostate = repostate + # mtime is needed for ETag self.mtime = st.st_mtime - self.size = st.st_size if request: self.repo.ui.environ = request.env
--- a/tests/test-hgweb.t Fri Sep 26 02:19:48 2014 +0200 +++ b/tests/test-hgweb.t Mon Sep 29 17:23:38 2014 -0500 @@ -531,6 +531,50 @@ 304 Not Modified +phase changes are refreshed (issue4061) + + $ echo bar >> foo + $ hg ci -msecret --secret + $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log?style=raw' + 200 Script output follows + + + # HG changelog + # Node ID 2ef0ac749a14e4f57a5a822464a0902c6f7f448f + + changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f + revision: 0 + user: test + date: Thu, 01 Jan 1970 00:00:00 +0000 + summary: base + branch: default + tag: tip + + + $ hg phase --draft tip + $ "$TESTDIR/get-with-headers.py" localhost:$HGPORT 'log?style=raw' + 200 Script output follows + + + # HG changelog + # Node ID a084749e708a9c4c0a5b652a2a446322ce290e04 + + changeset: a084749e708a9c4c0a5b652a2a446322ce290e04 + revision: 1 + user: test + date: Thu, 01 Jan 1970 00:00:00 +0000 + summary: secret + branch: default + tag: tip + + changeset: 2ef0ac749a14e4f57a5a822464a0902c6f7f448f + revision: 0 + user: test + date: Thu, 01 Jan 1970 00:00:00 +0000 + summary: base + + + errors $ cat errors.log