Mercurial > hg > mercurial-crew-with-dirclash
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]) |