810 def _show(self, ctx, copies, props): |
810 def _show(self, ctx, copies, props): |
811 '''show a single changeset or file revision''' |
811 '''show a single changeset or file revision''' |
812 |
812 |
813 showlist = templatekw.showlist |
813 showlist = templatekw.showlist |
814 |
814 |
815 def showparents(ctx, templ, **args): |
815 def showparents(repo, ctx, templ, **args): |
816 parents = [[('rev', p.rev()), ('node', p.hex())] |
816 parents = [[('rev', p.rev()), ('node', p.hex())] |
817 for p in self._meaningful_parentrevs(ctx)] |
817 for p in self._meaningful_parentrevs(ctx)] |
818 return showlist(templ, 'parent', parents, **args) |
818 return showlist(templ, 'parent', parents, **args) |
819 |
819 |
820 def showcopies(ctx, templ, **args): |
820 def showcopies(repo, ctx, templ, **args): |
821 c = [{'name': x[0], 'source': x[1]} for x in copies] |
821 c = [{'name': x[0], 'source': x[1]} for x in copies] |
822 return showlist(templ, 'file_copy', c, plural='file_copies', **args) |
822 return showlist(templ, 'file_copy', c, plural='file_copies', **args) |
823 |
823 |
824 files = [] |
824 files = [] |
825 def getfiles(): |
825 def getfiles(): |
826 if not files: |
826 if not files: |
827 files[:] = self.repo.status(ctx.parents()[0].node(), |
827 files[:] = self.repo.status(ctx.parents()[0].node(), |
828 ctx.node())[:3] |
828 ctx.node())[:3] |
829 return files |
829 return files |
830 def showmods(ctx, templ, **args): |
830 def showmods(repo, ctx, templ, **args): |
831 return showlist(templ, 'file_mod', getfiles()[0], **args) |
831 return showlist(templ, 'file_mod', getfiles()[0], **args) |
832 def showadds(ctx, templ, **args): |
832 def showadds(repo, ctx, templ, **args): |
833 return showlist(templ, 'file_add', getfiles()[1], **args) |
833 return showlist(templ, 'file_add', getfiles()[1], **args) |
834 def showdels(ctx, templ, **args): |
834 def showdels(repo, ctx, templ, **args): |
835 return showlist(templ, 'file_del', getfiles()[2], **args) |
835 return showlist(templ, 'file_del', getfiles()[2], **args) |
836 def showmanifest(ctx, templ, **args): |
836 |
837 args = args.copy() |
837 def showlatesttag(repo, ctx, templ, **args): |
838 args.update(dict(rev=self.repo.manifest.rev(ctx.changeset()[0]), |
|
839 node=hex(ctx.changeset()[0]))) |
|
840 return templ('manifest', **args) |
|
841 |
|
842 def showdiffstat(ctx, templ, **args): |
|
843 diff = patch.diff(self.repo, ctx.parents()[0].node(), ctx.node()) |
|
844 files, adds, removes = 0, 0, 0 |
|
845 for i in patch.diffstatdata(util.iterlines(diff)): |
|
846 files += 1 |
|
847 adds += i[1] |
|
848 removes += i[2] |
|
849 return '%s: +%s/-%s' % (files, adds, removes) |
|
850 |
|
851 def showlatesttag(ctx, templ, **args): |
|
852 return self._latesttaginfo(ctx.rev())[2] |
838 return self._latesttaginfo(ctx.rev())[2] |
853 def showlatesttagdistance(ctx, templ, **args): |
839 def showlatesttagdistance(repo, ctx, templ, **args): |
854 return self._latesttaginfo(ctx.rev())[1] |
840 return self._latesttaginfo(ctx.rev())[1] |
855 |
841 |
856 defprops = { |
842 defprops = { |
857 'file_adds': showadds, |
843 'file_adds': showadds, |
858 'file_dels': showdels, |
844 'file_dels': showdels, |
859 'file_mods': showmods, |
845 'file_mods': showmods, |
860 'file_copies': showcopies, |
846 'file_copies': showcopies, |
861 'manifest': showmanifest, |
847 'parents': showparents, |
862 'parents': showparents, |
|
863 'diffstat': showdiffstat, |
|
864 'latesttag': showlatesttag, |
848 'latesttag': showlatesttag, |
865 'latesttagdistance': showlatesttagdistance, |
849 'latesttagdistance': showlatesttagdistance, |
866 } |
850 } |
867 props = props.copy() |
851 props = props.copy() |
868 props.update(templatekw.keywords) |
852 props.update(templatekw.keywords) |
869 props.update(defprops) |
853 props.update(defprops) |
870 props['templ'] = self.t |
854 props['templ'] = self.t |
871 props['ctx'] = ctx |
855 props['ctx'] = ctx |
|
856 props['repo'] = self.repo |
872 |
857 |
873 # find correct templates for current mode |
858 # find correct templates for current mode |
874 |
859 |
875 tmplmodes = [ |
860 tmplmodes = [ |
876 (True, None), |
861 (True, None), |