mercurial/cmdutil.py
changeset 10055 e400a511e63a
parent 10054 1a85861f59af
child 10056 1a114aca93fa
equal deleted inserted replaced
10054:1a85861f59af 10055:e400a511e63a
   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),