mercurial/hgweb.py
changeset 1418 68f81ba07b2a
parent 1416 19d2776f1725
child 1445 56281e086f38
equal deleted inserted replaced
1417:90b62337f8dd 1418:68f81ba07b2a
    60         p = p[:-1]
    60         p = p[:-1]
    61     up = os.path.dirname(p)
    61     up = os.path.dirname(p)
    62     if up == "/":
    62     if up == "/":
    63         return "/"
    63         return "/"
    64     return up + "/"
    64     return up + "/"
       
    65 
       
    66 def get_mtime(repo_path):
       
    67     hg_path = os.path.join(repo_path, ".hg")
       
    68     cl_path = os.path.join(hg_path, "00changelog.i")
       
    69     if os.path.exists(os.path.join(cl_path)):
       
    70         return os.stat(cl_path).st_mtime
       
    71     else:
       
    72         return os.stat(hg_path).st_mtime
    65 
    73 
    66 class hgrequest:
    74 class hgrequest:
    67     def __init__(self, inp=None, out=None, env=None):
    75     def __init__(self, inp=None, out=None, env=None):
    68         self.inp = inp or sys.stdin
    76         self.inp = inp or sys.stdin
    69         self.out = out or sys.stdout
    77         self.out = out or sys.stdout
   176         self.mtime = -1
   184         self.mtime = -1
   177         self.reponame = name
   185         self.reponame = name
   178         self.archives = 'zip', 'gz', 'bz2'
   186         self.archives = 'zip', 'gz', 'bz2'
   179 
   187 
   180     def refresh(self):
   188     def refresh(self):
   181         s = os.stat(os.path.join(self.repo.root, ".hg", "00changelog.i"))
   189         mtime = get_mtime(self.repo.root)
   182         if s.st_mtime != self.mtime:
   190         if mtime != self.mtime:
   183             self.mtime = s.st_mtime
   191             self.mtime = mtime
   184             self.repo = hg.repository(self.repo.ui, self.repo.root)
   192             self.repo = hg.repository(self.repo.ui, self.repo.root)
   185             self.maxchanges = int(self.repo.ui.config("web", "maxchanges", 10))
   193             self.maxchanges = int(self.repo.ui.config("web", "maxchanges", 10))
   186             self.maxfiles = int(self.repo.ui.config("web", "maxfiles", 10))
   194             self.maxfiles = int(self.repo.ui.config("web", "maxfiles", 10))
   187             self.allowpull = self.repo.ui.configbool("web", "allowpull", True)
   195             self.allowpull = self.repo.ui.configbool("web", "allowpull", True)
   188 
   196 
   987 
   995 
   988                 url = ('/'.join([req.env["REQUEST_URI"].split('?')[0], name])
   996                 url = ('/'.join([req.env["REQUEST_URI"].split('?')[0], name])
   989                        .replace("//", "/"))
   997                        .replace("//", "/"))
   990 
   998 
   991                 # update time with local timezone
   999                 # update time with local timezone
   992                 d = (os.stat(os.path.join(path,
  1000                 d = (get_mtime(path), util.makedate()[1])
   993                                           ".hg", "00changelog.d")).st_mtime,
       
   994                      util.makedate()[1])
       
   995 
  1001 
   996                 yield dict(contact=(get("ui", "username") or # preferred
  1002                 yield dict(contact=(get("ui", "username") or # preferred
   997                                     get("web", "contact") or # deprecated
  1003                                     get("web", "contact") or # deprecated
   998                                     get("web", "author", "unknown")), # also
  1004                                     get("web", "author", "unknown")), # also
   999                            name=get("web", "name", name),
  1005                            name=get("web", "name", name),