equal
deleted
inserted
replaced
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')), |