comparison mercurial/hgweb.py @ 359:0c4688e9ee5c

hgweb: add file permissions -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 hgweb: add file permissions From: Goffredo Baroncelli <kreijack@libero.it> Show permissions in hgweb Tweaked by mpm manifest hash: f11361c6da21f3ba60c5e6a173396754c36efb1d -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCsHFqywK+sNU5EO8RAoqFAJ44P8kZoZDiY5Fw8LWpL/3ArXNE2QCeO3z4 0zV5rXWa/r/xgf+AVTLeQ/4= =FzLj -----END PGP SIGNATURE-----
author mpm@selenic.com
date Wed, 15 Jun 2005 10:20:26 -0800
parents 9525208e1c1d
children 21306bd3e0f5
comparison
equal deleted inserted replaced
358:9f4077d7ef6f 359:0c4688e9ee5c
128 "age": age, 128 "age": age,
129 "date": (lambda x: time.asctime(time.gmtime(x))), 129 "date": (lambda x: time.asctime(time.gmtime(x))),
130 "addbreaks": nl2br, 130 "addbreaks": nl2br,
131 "obfuscate": obfuscate, 131 "obfuscate": obfuscate,
132 "firstline": (lambda x: x.splitlines(1)[0]), 132 "firstline": (lambda x: x.splitlines(1)[0]),
133 "permissions": (lambda x: x and "-rwxr-xr-x" or "-rw-r--r--")
133 } 134 }
134 135
135 def refresh(self): 136 def refresh(self):
136 s = os.stat(os.path.join(self.path, ".hg", "00changelog.i")) 137 s = os.stat(os.path.join(self.path, ".hg", "00changelog.i"))
137 if s.st_mtime != self.mtime: 138 if s.st_mtime != self.mtime:
374 cn = cl.node(changerev) 375 cn = cl.node(changerev)
375 cs = cl.read(cn) 376 cs = cl.read(cn)
376 p1, p2 = fl.parents(n) 377 p1, p2 = fl.parents(n)
377 t = float(cs[2].split(' ')[0]) 378 t = float(cs[2].split(' ')[0])
378 mfn = cs[0] 379 mfn = cs[0]
380 self.repo.manifest.read(mfn)
379 381
380 def lines(): 382 def lines():
381 for l, t in enumerate(text.splitlines(1)): 383 for l, t in enumerate(text.splitlines(1)):
382 yield self.t("fileline", line = t, 384 yield self.t("fileline", line = t,
383 linenumber = "% 6d" % (l + 1), 385 linenumber = "% 6d" % (l + 1),
384 parity = l & 1) 386 parity = l & 1)
385 387
386 yield self.t("filerevision", file = f, 388 yield self.t("filerevision", file = f,
387 header = self.header(), 389 header = self.header(),
388 footer = self.footer(), 390 footer = self.footer(),
389 repo = self.reponame, 391 repo = self.reponame,
390 filenode = node, 392 filenode = node,
398 parent1 = self.parent("filerevparent", 400 parent1 = self.parent("filerevparent",
399 hex(p1), fl.rev(p1), file=f), 401 hex(p1), fl.rev(p1), file=f),
400 parent2 = self.parent("filerevparent", 402 parent2 = self.parent("filerevparent",
401 hex(p2), fl.rev(p2), file=f), 403 hex(p2), fl.rev(p2), file=f),
402 p1 = hex(p1), p2 = hex(p2), 404 p1 = hex(p1), p2 = hex(p2),
405 permissions = self.repo.manifest.readflags(mfn)[f],
403 p1rev = fl.rev(p1), p2rev = fl.rev(p2)) 406 p1rev = fl.rev(p1), p2rev = fl.rev(p2))
404 407
405 def fileannotate(self, f, node): 408 def fileannotate(self, f, node):
406 bcache = {} 409 bcache = {}
407 ncache = {} 410 ncache = {}
413 cn = cl.node(changerev) 416 cn = cl.node(changerev)
414 cs = cl.read(cn) 417 cs = cl.read(cn)
415 p1, p2 = fl.parents(n) 418 p1, p2 = fl.parents(n)
416 t = float(cs[2].split(' ')[0]) 419 t = float(cs[2].split(' ')[0])
417 mfn = cs[0] 420 mfn = cs[0]
421 self.repo.manifest.read(mfn)
418 422
419 def annotate(): 423 def annotate():
420 parity = 1 424 parity = 1
421 last = None 425 last = None
422 for r, l in fl.annotate(n): 426 for r, l in fl.annotate(n):
463 parent1 = self.parent("fileannotateparent", 467 parent1 = self.parent("fileannotateparent",
464 hex(p1), fl.rev(p1), file=f), 468 hex(p1), fl.rev(p1), file=f),
465 parent2 = self.parent("fileannotateparent", 469 parent2 = self.parent("fileannotateparent",
466 hex(p2), fl.rev(p2), file=f), 470 hex(p2), fl.rev(p2), file=f),
467 p1 = hex(p1), p2 = hex(p2), 471 p1 = hex(p1), p2 = hex(p2),
472 permissions = self.repo.manifest.readflags(mfn)[f],
468 p1rev = fl.rev(p1), p2rev = fl.rev(p2)) 473 p1rev = fl.rev(p1), p2rev = fl.rev(p2))
469 474
470 def manifest(self, mnode, path): 475 def manifest(self, mnode, path):
471 mf = self.repo.manifest.read(bin(mnode)) 476 mf = self.repo.manifest.read(bin(mnode))
472 rev = self.repo.manifest.rev(bin(mnode)) 477 rev = self.repo.manifest.rev(bin(mnode))
473 node = self.repo.changelog.node(rev) 478 node = self.repo.changelog.node(rev)
479 mff=self.repo.manifest.readflags(bin(mnode))
474 480
475 files = {} 481 files = {}
476 482
477 p = path[1:] 483 p = path[1:]
478 l = len(p) 484 l = len(p)
498 yield self.t("manifestfileentry", 504 yield self.t("manifestfileentry",
499 file = full, 505 file = full,
500 manifest = mnode, 506 manifest = mnode,
501 filenode = hex(fnode), 507 filenode = hex(fnode),
502 parity = parity, 508 parity = parity,
503 basename = f) 509 basename = f,
510 permissions = mff[full])
504 else: 511 else:
505 yield self.t("manifestdirentry", 512 yield self.t("manifestdirentry",
506 parity = parity, 513 parity = parity,
507 path = os.path.join(path, f), 514 path = os.path.join(path, f),
508 manifest = mnode, basename = f[:-1]) 515 manifest = mnode, basename = f[:-1])