comparison mercurial/hgweb.py @ 1572:385b8872b8e3

[hgweb] Initial import of the "gitweb" style
author Josef "Jeff" Sipek <jeffpc@optonline.net>
date Mon, 05 Dec 2005 04:30:47 -0500
parents 59b3639df0a9
children 32b091ce4026
comparison
equal deleted inserted replaced
1568:1d7d0c07e8f3 1572:385b8872b8e3
630 def entries(**map): 630 def entries(**map):
631 parity = 0 631 parity = 0
632 for k,n in i: 632 for k,n in i:
633 yield {"parity": parity, 633 yield {"parity": parity,
634 "tag": k, 634 "tag": k,
635 "date": cl.read(n)[2],
635 "node": hex(n)} 636 "node": hex(n)}
636 parity = 1 - parity 637 parity = 1 - parity
637 638
638 yield self.t("tags", 639 yield self.t("tags",
639 manifest=hex(mf), 640 manifest=hex(mf),
640 entries=entries) 641 entries=entries)
641 642
643 def summary(self):
644 cl = self.repo.changelog
645 mf = cl.read(cl.tip())[0]
646
647 i = self.repo.tagslist()
648 i.reverse()
649
650 def tagentries(**map):
651 parity = 0
652 count = 0
653 for k,n in i:
654 if k == "tip": # skip tip
655 continue;
656
657 count += 1
658 if count > 10: # limit to 10 tags
659 break;
660
661 c = cl.read(n)
662 m = c[0]
663 t = c[2]
664
665 yield self.t("tagentry",
666 parity = parity,
667 tag = k,
668 node = hex(n),
669 date = t,
670 manifest = hex(m))
671 parity = 1 - parity
672
673 def changelist(**map):
674 parity = 0
675 cl = self.repo.changelog
676 l = [] # build a list in forward order for efficiency
677 for i in range(start, end):
678 n = cl.node(i)
679 changes = cl.read(n)
680 hn = hex(n)
681 t = changes[2]
682
683 l.insert(0, self.t(
684 'shortlogentry',
685 parity = parity,
686 author = changes[1],
687 manifest = hex(changes[0]),
688 desc = changes[4],
689 date = t,
690 rev = i,
691 node = hn))
692 parity = 1 - parity
693
694 yield l
695
696 cl = self.repo.changelog
697 mf = cl.read(cl.tip())[0]
698 count = cl.count()
699 start = max(0, count - self.maxchanges)
700 end = min(count, start + self.maxchanges)
701 pos = end - 1
702
703 yield self.t("summary",
704 desc = self.repo.ui.config("web", "description", "unknown"),
705 owner = (self.repo.ui.config("ui", "username") or # preferred
706 self.repo.ui.config("web", "contact") or # deprecated
707 self.repo.ui.config("web", "author", "unknown")), # also
708 lastchange = (0, 0), # FIXME
709 manifest = hex(mf),
710 tags = tagentries,
711 shortlog = changelist)
712
642 def filediff(self, file, changeset): 713 def filediff(self, file, changeset):
643 cl = self.repo.changelog 714 cl = self.repo.changelog
644 n = self.repo.lookup(changeset) 715 n = self.repo.lookup(changeset)
645 changeset = hex(n) 716 changeset = hex(n)
646 p1 = cl.parents(n)[0] 717 p1 = cl.parents(n)[0]
796 req.write(self.manifest(req.form['manifest'][0], req.form['path'][0])) 867 req.write(self.manifest(req.form['manifest'][0], req.form['path'][0]))
797 868
798 elif req.form['cmd'][0] == 'tags': 869 elif req.form['cmd'][0] == 'tags':
799 req.write(self.tags()) 870 req.write(self.tags())
800 871
872 elif req.form['cmd'][0] == 'summary':
873 req.write(self.summary())
874
801 elif req.form['cmd'][0] == 'filediff': 875 elif req.form['cmd'][0] == 'filediff':
802 req.write(self.filediff(req.form['file'][0], req.form['node'][0])) 876 req.write(self.filediff(req.form['file'][0], req.form['node'][0]))
803 877
804 elif req.form['cmd'][0] == 'file': 878 elif req.form['cmd'][0] == 'file':
805 req.write(self.filerevision(req.form['file'][0], req.form['filenode'][0])) 879 req.write(self.filerevision(req.form['file'][0], req.form['filenode'][0]))