merge with stable
authorMatt Mackall <mpm@selenic.com>
Mon, 29 Sep 2014 17:23:38 -0500
changeset 22578 939ce500c92a
parent 22575 d7f7f1860f00 (current diff)
parent 22577 a111e460318a (diff)
child 22579 36a940d82f88
merge with stable
mercurial/commands.py
mercurial/hgweb/hgweb_mod.py
tests/test-hgweb.t
--- 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