309 else: |
309 else: |
310 (c, a, d, u) = repo.changes(None, None) |
310 (c, a, d, u) = repo.changes(None, None) |
311 repo.add(u) |
311 repo.add(u) |
312 repo.remove(d) |
312 repo.remove(d) |
313 |
313 |
314 def annotate(u, repo, file1, *files, **ops): |
314 def annotate(ui, repo, file1, *files, **opts): |
315 """show changeset information per file line""" |
315 """show changeset information per file line""" |
316 def getnode(rev): |
316 def getnode(rev): |
317 return hg.short(repo.changelog.node(rev)) |
317 return hg.short(repo.changelog.node(rev)) |
318 |
318 |
319 def getname(rev): |
319 def getname(rev): |
331 bcache[rev] = name |
331 bcache[rev] = name |
332 return name |
332 return name |
333 |
333 |
334 bcache = {} |
334 bcache = {} |
335 opmap = [['user', getname], ['number', str], ['changeset', getnode]] |
335 opmap = [['user', getname], ['number', str], ['changeset', getnode]] |
336 if not ops['user'] and not ops['changeset']: |
336 if not opts['user'] and not opts['changeset']: |
337 ops['number'] = 1 |
337 opts['number'] = 1 |
338 |
338 |
339 node = repo.dirstate.parents()[0] |
339 if opts['revision']: |
340 if ops['revision']: |
340 node = repo.changelog.lookup(opts['revision']) |
341 node = repo.changelog.lookup(ops['revision']) |
341 else: |
|
342 node = repo.dirstate.parents()[0] |
342 change = repo.changelog.read(node) |
343 change = repo.changelog.read(node) |
343 mmap = repo.manifest.read(change[0]) |
344 mmap = repo.manifest.read(change[0]) |
344 for f in relpath(repo, (file1,) + files): |
345 for f in relpath(repo, (file1,) + files): |
345 lines = repo.file(f).annotate(mmap[f]) |
346 lines = repo.file(f).annotate(mmap[f]) |
346 pieces = [] |
347 pieces = [] |
347 |
348 |
348 for o, f in opmap: |
349 for o, f in opmap: |
349 if ops[o]: |
350 if opts[o]: |
350 l = [f(n) for n, dummy in lines] |
351 l = [f(n) for n, dummy in lines] |
351 m = max(map(len, l)) |
352 m = max(map(len, l)) |
352 pieces.append(["%*s" % (m, x) for x in l]) |
353 pieces.append(["%*s" % (m, x) for x in l]) |
353 |
354 |
354 for p, l in zip(zip(*pieces), lines): |
355 for p, l in zip(zip(*pieces), lines): |
355 u.write(" ".join(p) + ": " + l[1]) |
356 ui.write("%s: %s" % (" ".join(p), l[1])) |
356 |
357 |
357 def cat(ui, repo, file1, rev=None, **opts): |
358 def cat(ui, repo, file1, rev=None, **opts): |
358 """output the latest or given revision of a file""" |
359 """output the latest or given revision of a file""" |
359 r = repo.file(relpath(repo, [file1])[0]) |
360 r = repo.file(relpath(repo, [file1])[0]) |
360 if rev: |
361 if rev: |