mercurial/cmdutil.py
changeset 3656 e50891e461e4
parent 3655 2801a3efc7c3
child 3657 731e739b8659
equal deleted inserted replaced
3655:2801a3efc7c3 3656:e50891e461e4
   236         return 0
   236         return 0
   237 
   237 
   238 class changeset_printer(object):
   238 class changeset_printer(object):
   239     '''show changeset information when templating not requested.'''
   239     '''show changeset information when templating not requested.'''
   240 
   240 
   241     def __init__(self, ui, repo, patch, buffered):
   241     def __init__(self, ui, repo, patch, brinfo, buffered):
   242         self.ui = ui
   242         self.ui = ui
   243         self.repo = repo
   243         self.repo = repo
   244         self.buffered = buffered
   244         self.buffered = buffered
   245         self.patch = patch
   245         self.patch = patch
       
   246         self.brinfo = brinfo
   246         if buffered:
   247         if buffered:
   247             self.ui = uibuffer(ui)
   248             self.ui = uibuffer(ui)
   248 
   249 
   249     def flush(self, rev):
   250     def flush(self, rev):
   250         return self.ui.flush(rev)
   251         return self.ui.flush(rev)
   251 
   252 
   252     def show(self, rev=0, changenode=None, brinfo=None, copies=None):
   253     def show(self, rev=0, changenode=None, copies=None):
   253         '''show a single changeset or file revision'''
   254         '''show a single changeset or file revision'''
   254         if self.buffered:
   255         if self.buffered:
   255             self.ui.mark(rev)
   256             self.ui.mark(rev)
   256         log = self.repo.changelog
   257         log = self.repo.changelog
   257         if changenode is None:
   258         if changenode is None:
   286         for tag in self.repo.nodetags(changenode):
   287         for tag in self.repo.nodetags(changenode):
   287             self.ui.write(_("tag:         %s\n") % tag)
   288             self.ui.write(_("tag:         %s\n") % tag)
   288         for parent in parents:
   289         for parent in parents:
   289             self.ui.write(_("parent:      %d:%s\n") % parent)
   290             self.ui.write(_("parent:      %d:%s\n") % parent)
   290 
   291 
   291         if brinfo and changenode in brinfo:
   292         if self.brinfo:
   292             br = brinfo[changenode]
   293             br = self.repo.branchlookup([changenode])
   293             self.ui.write(_("branch:      %s\n") % " ".join(br))
   294             if br:
       
   295                 self.ui.write(_("branch:      %s\n") % " ".join(br[changenode]))
   294 
   296 
   295         if self.ui.debugflag:
   297         if self.ui.debugflag:
   296             self.ui.write(_("manifest:    %d:%s\n") %
   298             self.ui.write(_("manifest:    %d:%s\n") %
   297                           (self.repo.manifest.rev(changes[0]), hex(changes[0])))
   299                           (self.repo.manifest.rev(changes[0]), hex(changes[0])))
   298         self.ui.write(_("user:        %s\n") % changes[1])
   300         self.ui.write(_("user:        %s\n") % changes[1])
   337             self.ui.write("\n")
   339             self.ui.write("\n")
   338 
   340 
   339 class changeset_templater(changeset_printer):
   341 class changeset_templater(changeset_printer):
   340     '''format changeset information.'''
   342     '''format changeset information.'''
   341 
   343 
   342     def __init__(self, ui, repo, patch, mapfile, buffered):
   344     def __init__(self, ui, repo, patch, brinfo, mapfile, buffered):
   343         changeset_printer.__init__(self, ui, repo, patch, buffered)
   345         changeset_printer.__init__(self, ui, repo, patch, brinfo, buffered)
   344         self.t = templater.templater(mapfile, templater.common_filters,
   346         self.t = templater.templater(mapfile, templater.common_filters,
   345                                      cache={'parent': '{rev}:{node|short} ',
   347                                      cache={'parent': '{rev}:{node|short} ',
   346                                             'manifest': '{rev}:{node|short}',
   348                                             'manifest': '{rev}:{node|short}',
   347                                             'filecopy': '{name} ({source})'})
   349                                             'filecopy': '{name} ({source})'})
   348 
   350 
   349     def use_template(self, t):
   351     def use_template(self, t):
   350         '''set template string to use'''
   352         '''set template string to use'''
   351         self.t.cache['changeset'] = t
   353         self.t.cache['changeset'] = t
   352 
   354 
   353     def show(self, rev=0, changenode=None, brinfo=None, copies=[], **props):
   355     def show(self, rev=0, changenode=None, copies=[], **props):
   354         '''show a single changeset or file revision'''
   356         '''show a single changeset or file revision'''
   355         if self.buffered:
   357         if self.buffered:
   356             self.ui.mark(rev)
   358             self.ui.mark(rev)
   357         log = self.repo.changelog
   359         log = self.repo.changelog
   358         if changenode is None:
   360         if changenode is None:
   426         def showbranches(**args):
   428         def showbranches(**args):
   427             branch = changes[5].get("branch")
   429             branch = changes[5].get("branch")
   428             if branch:
   430             if branch:
   429                 return showlist('branch', [branch], plural='branches', **args)
   431                 return showlist('branch', [branch], plural='branches', **args)
   430             # add old style branches if requested
   432             # add old style branches if requested
   431             if brinfo and changenode in brinfo:
   433             if self.brinfo:
   432                 return showlist('branch', brinfo[changenode],
   434                 br = self.repo.branchlookup([changenode])
   433                                 plural='branches', **args)
   435                 if changenode in br:
       
   436                     return showlist('branch', br[changenode],
       
   437                                     plural='branches', **args)
   434 
   438 
   435         def showparents(**args):
   439         def showparents(**args):
   436             parents = [[('rev', log.rev(p)), ('node', hex(p))]
   440             parents = [[('rev', log.rev(p)), ('node', hex(p))]
   437                        for p in log.parents(changenode)
   441                        for p in log.parents(changenode)
   438                        if self.ui.debugflag or p != nullid]
   442                        if self.ui.debugflag or p != nullid]
   553     If all of these values are either the unset or the empty string,
   557     If all of these values are either the unset or the empty string,
   554     regular display via changeset_printer() is done.
   558     regular display via changeset_printer() is done.
   555     """
   559     """
   556     # options
   560     # options
   557     patch = opts.get('patch')
   561     patch = opts.get('patch')
       
   562     br = None
       
   563     if opts.get('branches'):
       
   564         ui.warn(_("the --branches option is deprecated, "
       
   565                   "please use 'hg branches' instead\n"))
       
   566         br = True
   558     tmpl = opts.get('template')
   567     tmpl = opts.get('template')
   559     mapfile = None
   568     mapfile = None
   560     if tmpl:
   569     if tmpl:
   561         tmpl = templater.parsestring(tmpl, quoted=False)
   570         tmpl = templater.parsestring(tmpl, quoted=False)
   562     else:
   571     else:
   574             if not os.path.split(mapfile)[0]:
   583             if not os.path.split(mapfile)[0]:
   575                 mapname = (templater.templatepath('map-cmdline.' + mapfile)
   584                 mapname = (templater.templatepath('map-cmdline.' + mapfile)
   576                            or templater.templatepath(mapfile))
   585                            or templater.templatepath(mapfile))
   577                 if mapname: mapfile = mapname
   586                 if mapname: mapfile = mapname
   578         try:
   587         try:
   579             t = changeset_templater(ui, repo, patch, mapfile, buffered)
   588             t = changeset_templater(ui, repo, patch, br, mapfile, buffered)
   580         except SyntaxError, inst:
   589         except SyntaxError, inst:
   581             raise util.Abort(inst.args[0])
   590             raise util.Abort(inst.args[0])
   582         if tmpl: t.use_template(tmpl)
   591         if tmpl: t.use_template(tmpl)
   583         return t
   592         return t
   584     return changeset_printer(ui, repo, patch, buffered)
   593     return changeset_printer(ui, repo, patch, br, buffered)
   585 
   594