mercurial/commands.py
changeset 32648 d3d262ff42c0
parent 32584 746e12a767b3
child 32649 7a209737f01c
equal deleted inserted replaced
32647:331dcf199039 32648:d3d262ff42c0
   297         # to mimic the behavior of Mercurial before version 1.5
   297         # to mimic the behavior of Mercurial before version 1.5
   298         opts['file'] = True
   298         opts['file'] = True
   299 
   299 
   300     ctx = scmutil.revsingle(repo, opts.get('rev'))
   300     ctx = scmutil.revsingle(repo, opts.get('rev'))
   301 
   301 
   302     fm = ui.formatter('annotate', opts)
   302     rootfm = ui.formatter('annotate', opts)
   303     if ui.quiet:
   303     if ui.quiet:
   304         datefunc = util.shortdate
   304         datefunc = util.shortdate
   305     else:
   305     else:
   306         datefunc = util.datestr
   306         datefunc = util.datestr
   307     if ctx.rev() is None:
   307     if ctx.rev() is None:
   308         def hexfn(node):
   308         def hexfn(node):
   309             if node is None:
   309             if node is None:
   310                 return None
   310                 return None
   311             else:
   311             else:
   312                 return fm.hexfunc(node)
   312                 return rootfm.hexfunc(node)
   313         if opts.get('changeset'):
   313         if opts.get('changeset'):
   314             # omit "+" suffix which is appended to node hex
   314             # omit "+" suffix which is appended to node hex
   315             def formatrev(rev):
   315             def formatrev(rev):
   316                 if rev is None:
   316                 if rev is None:
   317                     return '%d' % ctx.p1().rev()
   317                     return '%d' % ctx.p1().rev()
   323                     return '%d+' % ctx.p1().rev()
   323                     return '%d+' % ctx.p1().rev()
   324                 else:
   324                 else:
   325                     return '%d ' % rev
   325                     return '%d ' % rev
   326         def formathex(hex):
   326         def formathex(hex):
   327             if hex is None:
   327             if hex is None:
   328                 return '%s+' % fm.hexfunc(ctx.p1().node())
   328                 return '%s+' % rootfm.hexfunc(ctx.p1().node())
   329             else:
   329             else:
   330                 return '%s ' % hex
   330                 return '%s ' % hex
   331     else:
   331     else:
   332         hexfn = fm.hexfunc
   332         hexfn = rootfm.hexfunc
   333         formatrev = formathex = str
   333         formatrev = formathex = str
   334 
   334 
   335     opmap = [('user', ' ', lambda x: x[0].user(), ui.shortuser),
   335     opmap = [('user', ' ', lambda x: x[0].user(), ui.shortuser),
   336              ('number', ' ', lambda x: x[0].rev(), formatrev),
   336              ('number', ' ', lambda x: x[0].rev(), formatrev),
   337              ('changeset', ' ', lambda x: hexfn(x[0].node()), formathex),
   337              ('changeset', ' ', lambda x: hexfn(x[0].node()), formathex),
   349     if linenumber and (not opts.get('changeset')) and (not opts.get('number')):
   349     if linenumber and (not opts.get('changeset')) and (not opts.get('number')):
   350         raise error.Abort(_('at least one of -n/-c is required for -l'))
   350         raise error.Abort(_('at least one of -n/-c is required for -l'))
   351 
   351 
   352     ui.pager('annotate')
   352     ui.pager('annotate')
   353 
   353 
   354     if fm.isplain():
   354     if rootfm.isplain():
   355         def makefunc(get, fmt):
   355         def makefunc(get, fmt):
   356             return lambda x: fmt(get(x))
   356             return lambda x: fmt(get(x))
   357     else:
   357     else:
   358         def makefunc(get, fmt):
   358         def makefunc(get, fmt):
   359             return get
   359             return get
   376         skiprevs = scmutil.revrange(repo, skiprevs)
   376         skiprevs = scmutil.revrange(repo, skiprevs)
   377 
   377 
   378     for abs in ctx.walk(m):
   378     for abs in ctx.walk(m):
   379         fctx = ctx[abs]
   379         fctx = ctx[abs]
   380         if not opts.get('text') and fctx.isbinary():
   380         if not opts.get('text') and fctx.isbinary():
   381             fm.plain(_("%s: binary file\n") % ((pats and m.rel(abs)) or abs))
   381             rootfm.plain(_("%s: binary file\n")
       
   382                          % ((pats and m.rel(abs)) or abs))
   382             continue
   383             continue
   383 
   384 
       
   385         fm = rootfm
   384         lines = fctx.annotate(follow=follow, linenumber=linenumber,
   386         lines = fctx.annotate(follow=follow, linenumber=linenumber,
   385                               skiprevs=skiprevs, diffopts=diffopts)
   387                               skiprevs=skiprevs, diffopts=diffopts)
   386         if not lines:
   388         if not lines:
   387             continue
   389             continue
   388         formats = []
   390         formats = []
   404             fm.write('line', ": %s", l[1])
   406             fm.write('line', ": %s", l[1])
   405 
   407 
   406         if not lines[-1][1].endswith('\n'):
   408         if not lines[-1][1].endswith('\n'):
   407             fm.plain('\n')
   409             fm.plain('\n')
   408 
   410 
   409     fm.end()
   411     rootfm.end()
   410 
   412 
   411 @command('archive',
   413 @command('archive',
   412     [('', 'no-decode', None, _('do not pass files through decoders')),
   414     [('', 'no-decode', None, _('do not pass files through decoders')),
   413     ('p', 'prefix', '', _('directory prefix for files in archive'),
   415     ('p', 'prefix', '', _('directory prefix for files in archive'),
   414      _('PREFIX')),
   416      _('PREFIX')),