46 if mtime != self.mtime: |
46 if mtime != self.mtime: |
47 self.mtime = mtime |
47 self.mtime = mtime |
48 self.repo = hg.repository(self.repo.ui, self.repo.root) |
48 self.repo = hg.repository(self.repo.ui, self.repo.root) |
49 self.maxchanges = int(self.repo.ui.config("web", "maxchanges", 10)) |
49 self.maxchanges = int(self.repo.ui.config("web", "maxchanges", 10)) |
50 self.stripecount = int(self.repo.ui.config("web", "stripes", 1)) |
50 self.stripecount = int(self.repo.ui.config("web", "stripes", 1)) |
|
51 self.maxshortchanges = int(self.repo.ui.config("web", "maxshortchanges", 60)) |
51 self.maxfiles = int(self.repo.ui.config("web", "maxfiles", 10)) |
52 self.maxfiles = int(self.repo.ui.config("web", "maxfiles", 10)) |
52 self.allowpull = self.repo.ui.configbool("web", "allowpull", True) |
53 self.allowpull = self.repo.ui.configbool("web", "allowpull", True) |
53 |
54 |
54 def archivelist(self, nodeid): |
55 def archivelist(self, nodeid): |
55 allowed = self.repo.ui.configlist("web", "allow_archive") |
56 allowed = self.repo.ui.configlist("web", "allow_archive") |
158 yield diffblock(mdiff.unidiff(to, date1, tn, date2, f, |
159 yield diffblock(mdiff.unidiff(to, date1, tn, date2, f, |
159 showfunc=showfunc, ignorews=ignorews, |
160 showfunc=showfunc, ignorews=ignorews, |
160 ignorewsamount=ignorewsamount, |
161 ignorewsamount=ignorewsamount, |
161 ignoreblanklines=ignoreblanklines), f, tn) |
162 ignoreblanklines=ignoreblanklines), f, tn) |
162 |
163 |
163 def changelog(self, pos): |
164 def changelog(self, pos, shortlog=False): |
164 def changenav(**map): |
165 def changenav(**map): |
165 def seq(factor, maxchanges=None): |
166 def seq(factor, maxchanges=None): |
166 if maxchanges: |
167 if maxchanges: |
167 yield maxchanges |
168 yield maxchanges |
168 if maxchanges >= 20 and maxchanges <= 40: |
169 if maxchanges >= 20 and maxchanges <= 40: |
219 parity = 1 - parity |
221 parity = 1 - parity |
220 |
222 |
221 for e in l: |
223 for e in l: |
222 yield e |
224 yield e |
223 |
225 |
|
226 maxchanges = shortlog and self.maxshortchanges or self.maxchanges |
224 cl = self.repo.changelog |
227 cl = self.repo.changelog |
225 mf = cl.read(cl.tip())[0] |
228 mf = cl.read(cl.tip())[0] |
226 count = cl.count() |
229 count = cl.count() |
227 start = max(0, pos - self.maxchanges + 1) |
230 start = max(0, pos - maxchanges + 1) |
228 end = min(count, start + self.maxchanges) |
231 end = min(count, start + maxchanges) |
229 pos = end - 1 |
232 pos = end - 1 |
230 |
233 |
231 yield self.t('changelog', |
234 yield self.t(shortlog and 'shortlog' or 'changelog', |
232 changenav=changenav, |
235 changenav=changenav, |
233 manifest=hex(mf), |
236 manifest=hex(mf), |
234 rev=pos, changesets=count, entries=changelist, |
237 rev=pos, changesets=count, entries=changelist, |
235 archives=self.archivelist("tip")) |
238 archives=self.archivelist("tip")) |
236 |
239 |
609 self.repo.ui.config("web", "contact") or # deprecated |
612 self.repo.ui.config("web", "contact") or # deprecated |
610 self.repo.ui.config("web", "author", "unknown")), # also |
613 self.repo.ui.config("web", "author", "unknown")), # also |
611 lastchange = (0, 0), # FIXME |
614 lastchange = (0, 0), # FIXME |
612 manifest = hex(mf), |
615 manifest = hex(mf), |
613 tags = tagentries, |
616 tags = tagentries, |
614 shortlog = changelist) |
617 shortlog = changelist, |
|
618 archives=self.archivelist("tip")) |
615 |
619 |
616 def filediff(self, file, changeset): |
620 def filediff(self, file, changeset): |
617 cl = self.repo.changelog |
621 cl = self.repo.changelog |
618 n = self.repo.lookup(changeset) |
622 n = self.repo.lookup(changeset) |
619 changeset = hex(n) |
623 changeset = hex(n) |
689 **map) |
693 **map) |
690 |
694 |
691 def expand_form(form): |
695 def expand_form(form): |
692 shortcuts = { |
696 shortcuts = { |
693 'cl': [('cmd', ['changelog']), ('rev', None)], |
697 'cl': [('cmd', ['changelog']), ('rev', None)], |
|
698 'sl': [('cmd', ['shortlog']), ('rev', None)], |
694 'cs': [('cmd', ['changeset']), ('node', None)], |
699 'cs': [('cmd', ['changeset']), ('node', None)], |
695 'f': [('cmd', ['file']), ('filenode', None)], |
700 'f': [('cmd', ['file']), ('filenode', None)], |
696 'fl': [('cmd', ['filelog']), ('filenode', None)], |
701 'fl': [('cmd', ['filelog']), ('filenode', None)], |
697 'fd': [('cmd', ['filediff']), ('node', None)], |
702 'fd': [('cmd', ['filediff']), ('node', None)], |
698 'fa': [('cmd', ['annotate']), ('filenode', None)], |
703 'fa': [('cmd', ['annotate']), ('filenode', None)], |
770 except hg.RepoError: |
775 except hg.RepoError: |
771 req.write(self.search(hi)) # XXX redirect to 404 page? |
776 req.write(self.search(hi)) # XXX redirect to 404 page? |
772 return |
777 return |
773 |
778 |
774 req.write(self.changelog(hi)) |
779 req.write(self.changelog(hi)) |
|
780 |
|
781 def do_shortlog(self, req): |
|
782 hi = self.repo.changelog.count() - 1 |
|
783 if req.form.has_key('rev'): |
|
784 hi = req.form['rev'][0] |
|
785 try: |
|
786 hi = self.repo.changelog.rev(self.repo.lookup(hi)) |
|
787 except hg.RepoError: |
|
788 req.write(self.search(hi)) # XXX redirect to 404 page? |
|
789 return |
|
790 |
|
791 req.write(self.changelog(hi, shortlog = True)) |
775 |
792 |
776 def do_changeset(self, req): |
793 def do_changeset(self, req): |
777 req.write(self.changeset(req.form['node'][0])) |
794 req.write(self.changeset(req.form['node'][0])) |
778 |
795 |
779 def do_manifest(self, req): |
796 def do_manifest(self, req): |