708 if method: |
689 if method: |
709 method(req) |
690 method(req) |
710 else: |
691 else: |
711 req.write(self.t("error")) |
692 req.write(self.t("error")) |
712 |
693 |
|
694 def changectx(self, req): |
|
695 if req.form.has_key('node'): |
|
696 changeid = req.form['node'][0] |
|
697 else: |
|
698 changeid = req.form['manifest'][0] |
|
699 try: |
|
700 ctx = self.repo.changectx(changeid) |
|
701 except hg.RepoError: |
|
702 man = self.repo.manifest |
|
703 mn = man.lookup(changeid) |
|
704 ctx = self.repo.changectx(man.linkrev(mn)) |
|
705 |
|
706 return ctx |
|
707 |
|
708 def filectx(self, req): |
|
709 path = self.cleanpath(req.form['file'][0]) |
|
710 if req.form.has_key('node'): |
|
711 changeid = req.form['node'][0] |
|
712 else: |
|
713 changeid = req.form['filenode'][0] |
|
714 try: |
|
715 ctx = self.repo.changectx(changeid) |
|
716 fctx = ctx.filectx(path) |
|
717 except hg.RepoError: |
|
718 fctx = self.repo.filectx(path, fileid=changeid) |
|
719 |
|
720 return fctx |
|
721 |
713 def stripes(self, parity): |
722 def stripes(self, parity): |
714 "make horizontal stripes for easier reading" |
723 "make horizontal stripes for easier reading" |
715 if self.stripecount: |
724 if self.stripecount: |
716 return (1 + parity / self.stripecount) & 1 |
725 return (1 + parity / self.stripecount) & 1 |
717 else: |
726 else: |
718 return 0 |
727 return 0 |
719 |
728 |
720 def do_changelog(self, req): |
729 def do_changelog(self, req, shortlog = False): |
721 if req.form.has_key('rev'): |
730 if req.form.has_key('node'): |
722 hi = req.form['rev'][0] |
731 ctx = self.changectx(req) |
723 else: |
732 else: |
724 hi = self.repo.changelog.count() - 1 |
733 if req.form.has_key('rev'): |
725 try: |
734 hi = req.form['rev'][0] |
726 ctx = self.repo.changectx(hi) |
735 else: |
727 except hg.RepoError: |
736 hi = self.repo.changelog.count() - 1 |
728 req.write(self.search(hi)) # XXX redirect to 404 page? |
737 try: |
729 return |
738 ctx = self.repo.changectx(hi) |
730 |
739 except hg.RepoError: |
731 req.write(self.changelog(ctx)) |
740 req.write(self.search(hi)) # XXX redirect to 404 page? |
|
741 return |
|
742 |
|
743 req.write(self.changelog(ctx, shortlog = shortlog)) |
732 |
744 |
733 def do_shortlog(self, req): |
745 def do_shortlog(self, req): |
734 if req.form.has_key('rev'): |
746 self.do_changelog(req, shortlog = True) |
735 hi = req.form['rev'][0] |
|
736 else: |
|
737 hi = self.repo.changelog.count() - 1 |
|
738 try: |
|
739 hi = self.repo.changectx(hi) |
|
740 except hg.RepoError: |
|
741 req.write(self.search(hi)) # XXX redirect to 404 page? |
|
742 return |
|
743 |
|
744 req.write(self.changelog(ctx, shortlog = True)) |
|
745 |
747 |
746 def do_changeset(self, req): |
748 def do_changeset(self, req): |
747 ctx = self.repo.changectx(req.form['node'][0]) |
749 ctx = self.repo.changectx(req.form['node'][0]) |
748 req.write(self.changeset(ctx)) |
750 req.write(self.changeset(ctx)) |
749 |
751 |
750 def do_manifest(self, req): |
752 def do_manifest(self, req): |
751 req.write(self.manifest(req.changectx, |
753 req.write(self.manifest(self.changectx(req), |
752 self.cleanpath(req.form['path'][0]))) |
754 self.cleanpath(req.form['path'][0]))) |
753 |
755 |
754 def do_tags(self, req): |
756 def do_tags(self, req): |
755 req.write(self.tags()) |
757 req.write(self.tags()) |
756 |
758 |
757 def do_summary(self, req): |
759 def do_summary(self, req): |
758 req.write(self.summary()) |
760 req.write(self.summary()) |
759 |
761 |
760 def do_filediff(self, req): |
762 def do_filediff(self, req): |
761 ctx = self.repo.changectx(req.form['node'][0]) |
763 req.write(self.filediff(self.filectx(req))) |
762 fctx = ctx.filectx(self.cleanpath(req.form['file'][0])) |
|
763 req.write(self.filediff(fctx)) |
|
764 |
764 |
765 def do_file(self, req): |
765 def do_file(self, req): |
766 req.write(self.filerevision(req.filectx)) |
766 req.write(self.filerevision(self.filectx(req))) |
767 |
767 |
768 def do_annotate(self, req): |
768 def do_annotate(self, req): |
769 req.write(self.fileannotate(req.filectx)) |
769 req.write(self.fileannotate(self.filectx(req))) |
770 |
770 |
771 def do_filelog(self, req): |
771 def do_filelog(self, req): |
772 req.write(self.filelog(req.filectx)) |
772 req.write(self.filelog(self.filectx(req))) |
773 |
773 |
774 def do_heads(self, req): |
774 def do_heads(self, req): |
775 resp = " ".join(map(hex, self.repo.heads())) + "\n" |
775 resp = " ".join(map(hex, self.repo.heads())) + "\n" |
776 req.httphdr("application/mercurial-0.1", length=len(resp)) |
776 req.httphdr("application/mercurial-0.1", length=len(resp)) |
777 req.write(resp) |
777 req.write(resp) |