200 "parent": self.siblings(cl.parents(n), cl.rev, |
200 "parent": self.siblings(cl.parents(n), cl.rev, |
201 cl.rev(n) - 1), |
201 cl.rev(n) - 1), |
202 "child": self.siblings(cl.children(n), cl.rev, |
202 "child": self.siblings(cl.children(n), cl.rev, |
203 cl.rev(n) + 1), |
203 cl.rev(n) + 1), |
204 "changelogtag": self.showtag("changelogtag",n), |
204 "changelogtag": self.showtag("changelogtag",n), |
205 "manifest": hex(changes[0]), |
|
206 "desc": changes[4], |
205 "desc": changes[4], |
207 "date": changes[2], |
206 "date": changes[2], |
208 "files": self.listfilediffs(changes[3], n), |
207 "files": self.listfilediffs(changes[3], n), |
209 "rev": i, |
208 "rev": i, |
210 "node": hn}) |
209 "node": hn}) |
221 end = min(count, start + maxchanges) |
220 end = min(count, start + maxchanges) |
222 pos = end - 1 |
221 pos = end - 1 |
223 |
222 |
224 yield self.t(shortlog and 'shortlog' or 'changelog', |
223 yield self.t(shortlog and 'shortlog' or 'changelog', |
225 changenav=changenav, |
224 changenav=changenav, |
226 manifest=hex(mf), |
225 node=hex(cl.tip()), |
227 rev=pos, changesets=count, entries=changelist, |
226 rev=pos, changesets=count, entries=changelist, |
228 archives=self.archivelist("tip")) |
227 archives=self.archivelist("tip")) |
229 |
228 |
230 def search(self, query): |
229 def search(self, query): |
231 |
230 |
263 parity=self.stripes(count), |
262 parity=self.stripes(count), |
264 author=changes[1], |
263 author=changes[1], |
265 parent=self.siblings(cl.parents(n), cl.rev), |
264 parent=self.siblings(cl.parents(n), cl.rev), |
266 child=self.siblings(cl.children(n), cl.rev), |
265 child=self.siblings(cl.children(n), cl.rev), |
267 changelogtag=self.showtag("changelogtag",n), |
266 changelogtag=self.showtag("changelogtag",n), |
268 manifest=hex(changes[0]), |
|
269 desc=changes[4], |
267 desc=changes[4], |
270 date=changes[2], |
268 date=changes[2], |
271 files=self.listfilediffs(changes[3], n), |
269 files=self.listfilediffs(changes[3], n), |
272 rev=i, |
270 rev=i, |
273 node=hn) |
271 node=hn) |
278 cl = self.repo.changelog |
276 cl = self.repo.changelog |
279 mf = cl.read(cl.tip())[0] |
277 mf = cl.read(cl.tip())[0] |
280 |
278 |
281 yield self.t('search', |
279 yield self.t('search', |
282 query=query, |
280 query=query, |
283 manifest=hex(mf), |
281 node=hex(cl.tip()), |
284 entries=changelist) |
282 entries=changelist) |
285 |
283 |
286 def changeset(self, nodeid): |
284 def changeset(self, nodeid): |
287 cl = self.repo.changelog |
285 cl = self.repo.changelog |
288 n = self.repo.lookup(nodeid) |
286 n = self.repo.lookup(nodeid) |
307 rev=cl.rev(n), |
305 rev=cl.rev(n), |
308 node=nodeid, |
306 node=nodeid, |
309 parent=self.siblings(cl.parents(n), cl.rev), |
307 parent=self.siblings(cl.parents(n), cl.rev), |
310 child=self.siblings(cl.children(n), cl.rev), |
308 child=self.siblings(cl.children(n), cl.rev), |
311 changesettag=self.showtag("changesettag",n), |
309 changesettag=self.showtag("changesettag",n), |
312 manifest=hex(changes[0]), |
|
313 author=changes[1], |
310 author=changes[1], |
314 desc=changes[4], |
311 desc=changes[4], |
315 date=changes[2], |
312 date=changes[2], |
316 files=files, |
313 files=files, |
317 archives=self.archivelist(nodeid)) |
314 archives=self.archivelist(nodeid)) |
383 text=lines(), |
380 text=lines(), |
384 raw=rawtext, |
381 raw=rawtext, |
385 mimetype=mt, |
382 mimetype=mt, |
386 rev=changerev, |
383 rev=changerev, |
387 node=hex(cn), |
384 node=hex(cn), |
388 manifest=hex(mfn), |
|
389 author=cs[1], |
385 author=cs[1], |
390 date=cs[2], |
386 date=cs[2], |
391 parent=self.siblings(fl.parents(n), fl.rev, file=f), |
387 parent=self.siblings(fl.parents(n), fl.rev, file=f), |
392 child=self.siblings(fl.children(n), fl.rev, file=f), |
388 child=self.siblings(fl.children(n), fl.rev, file=f), |
393 rename=self.renamelink(fl, n), |
389 rename=self.renamelink(fl, n), |
422 filenode=node, |
418 filenode=node, |
423 annotate=annotate, |
419 annotate=annotate, |
424 path=_up(f), |
420 path=_up(f), |
425 rev=fctx.rev(), |
421 rev=fctx.rev(), |
426 node=hex(fctx.node()), |
422 node=hex(fctx.node()), |
427 manifest=hex(fctx.changectx().changeset()[0]), |
|
428 author=fctx.user(), |
423 author=fctx.user(), |
429 date=fctx.date(), |
424 date=fctx.date(), |
430 rename=self.renamelink(fl, n), |
425 rename=self.renamelink(fl, n), |
431 parent=self.siblings(fl.parents(n), fl.rev, file=f), |
426 parent=self.siblings(fl.parents(n), fl.rev, file=f), |
432 child=self.siblings(fl.children(n), fl.rev, file=f), |
427 child=self.siblings(fl.children(n), fl.rev, file=f), |
433 permissions=fctx.manifest().execf(f)) |
428 permissions=fctx.manifest().execf(f)) |
434 |
429 |
435 def manifest(self, mnode, path): |
430 def manifest(self, ctx, path): |
436 man = self.repo.manifest |
431 mf = ctx.manifest() |
437 mn = man.lookup(mnode) |
432 node = ctx.node() |
438 mnode = hex(mn) |
|
439 mf = man.read(mn) |
|
440 rev = man.rev(mn) |
|
441 changerev = man.linkrev(mn) |
|
442 node = self.repo.changelog.node(changerev) |
|
443 |
433 |
444 files = {} |
434 files = {} |
445 |
435 |
446 p = path[1:] |
436 p = path[1:] |
447 if p and p[-1] != "/": |
437 if p and p[-1] != "/": |
467 full, fnode = files[f] |
457 full, fnode = files[f] |
468 if not fnode: |
458 if not fnode: |
469 continue |
459 continue |
470 |
460 |
471 yield {"file": full, |
461 yield {"file": full, |
472 "manifest": mnode, |
|
473 "filenode": hex(fnode), |
462 "filenode": hex(fnode), |
474 "parity": self.stripes(parity), |
463 "parity": self.stripes(parity), |
475 "basename": f, |
464 "basename": f, |
476 "permissions": mf.execf(full)} |
465 "permissions": mf.execf(full)} |
477 parity += 1 |
466 parity += 1 |
485 if fnode: |
474 if fnode: |
486 continue |
475 continue |
487 |
476 |
488 yield {"parity": self.stripes(parity), |
477 yield {"parity": self.stripes(parity), |
489 "path": os.path.join(path, f), |
478 "path": os.path.join(path, f), |
490 "manifest": mnode, |
|
491 "basename": f[:-1]} |
479 "basename": f[:-1]} |
492 parity += 1 |
480 parity += 1 |
493 |
481 |
494 yield self.t("manifest", |
482 yield self.t("manifest", |
495 manifest=mnode, |
483 rev=ctx.rev(), |
496 rev=rev, |
|
497 node=hex(node), |
484 node=hex(node), |
498 path=path, |
485 path=path, |
499 up=_up(path), |
486 up=_up(path), |
500 fentries=filelist, |
487 fentries=filelist, |
501 dentries=dirlist, |
488 dentries=dirlist, |
502 archives=self.archivelist(hex(node))) |
489 archives=self.archivelist(hex(node))) |
503 |
490 |
504 def tags(self): |
491 def tags(self): |
505 cl = self.repo.changelog |
492 cl = self.repo.changelog |
506 mf = cl.read(cl.tip())[0] |
|
507 |
493 |
508 i = self.repo.tagslist() |
494 i = self.repo.tagslist() |
509 i.reverse() |
495 i.reverse() |
510 |
496 |
511 def entries(notip=False, **map): |
497 def entries(notip=False, **map): |
512 parity = 0 |
498 parity = 0 |
513 for k,n in i: |
499 for k,n in i: |
514 if notip and k == "tip": continue |
500 if notip and k == "tip": continue |
515 yield {"parity": self.stripes(parity), |
501 yield {"parity": self.stripes(parity), |
516 "tag": k, |
502 "tag": k, |
517 "tagmanifest": hex(cl.read(n)[0]), |
|
518 "date": cl.read(n)[2], |
503 "date": cl.read(n)[2], |
519 "node": hex(n)} |
504 "node": hex(n)} |
520 parity += 1 |
505 parity += 1 |
521 |
506 |
522 yield self.t("tags", |
507 yield self.t("tags", |
523 manifest=hex(mf), |
508 node=hex(self.repo.changelog.tip()), |
524 entries=lambda **x: entries(False, **x), |
509 entries=lambda **x: entries(False, **x), |
525 entriesnotip=lambda **x: entries(True, **x)) |
510 entriesnotip=lambda **x: entries(True, **x)) |
526 |
511 |
527 def summary(self): |
512 def summary(self): |
528 cl = self.repo.changelog |
513 cl = self.repo.changelog |
529 mf = cl.read(cl.tip())[0] |
|
530 |
514 |
531 i = self.repo.tagslist() |
515 i = self.repo.tagslist() |
532 i.reverse() |
516 i.reverse() |
533 |
517 |
534 def tagentries(**map): |
518 def tagentries(**map): |
548 |
532 |
549 yield self.t("tagentry", |
533 yield self.t("tagentry", |
550 parity = self.stripes(parity), |
534 parity = self.stripes(parity), |
551 tag = k, |
535 tag = k, |
552 node = hex(n), |
536 node = hex(n), |
553 date = t, |
537 date = t) |
554 tagmanifest = hex(m)) |
|
555 parity += 1 |
538 parity += 1 |
556 |
539 |
557 def changelist(**map): |
540 def changelist(**map): |
558 parity = 0 |
541 parity = 0 |
559 cl = self.repo.changelog |
542 cl = self.repo.changelog |
566 |
549 |
567 l.insert(0, self.t( |
550 l.insert(0, self.t( |
568 'shortlogentry', |
551 'shortlogentry', |
569 parity = parity, |
552 parity = parity, |
570 author = changes[1], |
553 author = changes[1], |
571 manifest = hex(changes[0]), |
|
572 desc = changes[4], |
554 desc = changes[4], |
573 date = t, |
555 date = t, |
574 rev = i, |
556 rev = i, |
575 node = hn)) |
557 node = hn)) |
576 parity = 1 - parity |
558 parity = 1 - parity |
577 |
559 |
578 yield l |
560 yield l |
579 |
561 |
580 cl = self.repo.changelog |
|
581 mf = cl.read(cl.tip())[0] |
|
582 count = cl.count() |
562 count = cl.count() |
583 start = max(0, count - self.maxchanges) |
563 start = max(0, count - self.maxchanges) |
584 end = min(count, start + self.maxchanges) |
564 end = min(count, start + self.maxchanges) |
585 |
565 |
586 yield self.t("summary", |
566 yield self.t("summary", |
587 desc = self.repo.ui.config("web", "description", "unknown"), |
567 desc = self.repo.ui.config("web", "description", "unknown"), |
588 owner = (self.repo.ui.config("ui", "username") or # preferred |
568 owner = (self.repo.ui.config("ui", "username") or # preferred |
589 self.repo.ui.config("web", "contact") or # deprecated |
569 self.repo.ui.config("web", "contact") or # deprecated |
590 self.repo.ui.config("web", "author", "unknown")), # also |
570 self.repo.ui.config("web", "author", "unknown")), # also |
591 lastchange = (0, 0), # FIXME |
571 lastchange = (0, 0), # FIXME |
592 manifest = hex(mf), |
|
593 tags = tagentries, |
572 tags = tagentries, |
594 shortlog = changelist, |
573 shortlog = changelist, |
|
574 node = hex(self.repo.changelog.tip()), |
595 archives=self.archivelist("tip")) |
575 archives=self.archivelist("tip")) |
596 |
576 |
597 def filediff(self, file, changeset): |
577 def filediff(self, file, changeset): |
598 cl = self.repo.changelog |
578 cl = self.repo.changelog |
599 n = self.repo.lookup(changeset) |
579 n = self.repo.lookup(changeset) |
691 if value is None: |
671 if value is None: |
692 value = form[k] |
672 value = form[k] |
693 form[name] = value |
673 form[name] = value |
694 del form[k] |
674 del form[k] |
695 |
675 |
|
676 if form.has_key('manifest'): |
|
677 changeid = req.form['manifest'][0] |
|
678 try: |
|
679 req.changectx = self.repo.changectx(changeid) |
|
680 except hg.RepoError: |
|
681 man = self.repo.manifest |
|
682 mn = man.lookup(changeid) |
|
683 req.changectx = self.repo.changectx(man.linkrev(mn)) |
|
684 |
696 self.refresh() |
685 self.refresh() |
697 |
686 |
698 expand_form(req.form) |
687 expand_form(req.form) |
699 |
688 |
700 m = os.path.join(self.templatepath, "map") |
689 m = os.path.join(self.templatepath, "map") |
769 |
758 |
770 def do_changeset(self, req): |
759 def do_changeset(self, req): |
771 req.write(self.changeset(req.form['node'][0])) |
760 req.write(self.changeset(req.form['node'][0])) |
772 |
761 |
773 def do_manifest(self, req): |
762 def do_manifest(self, req): |
774 req.write(self.manifest(req.form['manifest'][0], |
763 req.write(self.manifest(req.changectx, |
775 self.cleanpath(req.form['path'][0]))) |
764 self.cleanpath(req.form['path'][0]))) |
776 |
765 |
777 def do_tags(self, req): |
766 def do_tags(self, req): |
778 req.write(self.tags()) |
767 req.write(self.tags()) |
779 |
768 |