Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 329:67c19ad374a9
Use common output function show_changeset() for hg heads|history|log|tip.
show_changeset() uses functions from ui.py instead of print.
author | Thomas Arendsen Hein <thomas@intevation.de> |
---|---|
date | Mon, 13 Jun 2005 08:49:21 +0100 |
parents | 292e10b5831a |
children | 27d08c0c2a7e |
comparison
equal
deleted
inserted
replaced
320:292e10b5831a | 329:67c19ad374a9 |
---|---|
68 sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) | 68 sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) |
69 for f in d: | 69 for f in d: |
70 to = repo.file(f).read(mmap[f]) | 70 to = repo.file(f).read(mmap[f]) |
71 tn = None | 71 tn = None |
72 sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) | 72 sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) |
73 | 73 |
74 def show_changeset(ui, repo, rev=0, changenode=None, filelog=None): | |
75 """show a single changeset or file revision""" | |
76 changelog = repo.changelog | |
77 if filelog: | |
78 log = filelog | |
79 filerev = rev | |
80 node = filenode = filelog.node(filerev) | |
81 changerev = filelog.linkrev(filenode) | |
82 changenode = changenode or changelog.node(changerev) | |
83 else: | |
84 changerev = rev | |
85 log = changelog | |
86 if changenode is None: | |
87 changenode = changelog.node(changerev) | |
88 elif not changerev: | |
89 rev = changerev = changelog.rev(changenode) | |
90 node = changenode | |
91 | |
92 if ui.quiet: | |
93 ui.write("%d:%s\n" % (rev, hg.hex(node))) | |
94 return | |
95 | |
96 changes = changelog.read(changenode) | |
97 description = changes[4].strip().splitlines() | |
98 | |
99 parents = [(log.rev(parent), hg.hex(parent)) | |
100 for parent in log.parents(node) | |
101 if ui.debugflag or parent != hg.nullid] | |
102 if not ui.debugflag and len(parents) == 1 and parents[0][0] == rev-1: | |
103 parents = [] | |
104 | |
105 if filelog: | |
106 ui.write("revision: %d:%s\n" % (filerev, hg.hex(filenode))) | |
107 for parent in parents: | |
108 ui.write("parent: %d:%s\n" % parent) | |
109 ui.status("changeset: %d:%s\n" % (changerev, hg.hex(changenode))) | |
110 else: | |
111 ui.write("changeset: %d:%s\n" % (changerev, hg.hex(changenode))) | |
112 for parent in parents: | |
113 ui.write("parent: %d:%s\n" % parent) | |
114 ui.note("manifest: %d:%s\n" % (repo.manifest.rev(changes[0]), | |
115 hg.hex(changes[0]))) | |
116 ui.status("user: %s\n" % changes[1]) | |
117 ui.status("date: %s\n" % time.asctime( | |
118 time.localtime(float(changes[2].split(' ')[0])))) | |
119 ui.note("files: %s\n" % " ".join(changes[3])) | |
120 if description: | |
121 ui.status("description: %s\n" % description[0]) | |
122 ui.note(''.join(["| %s\n" % line.rstrip() for line in description[1:]])) | |
123 ui.status("\n") | |
124 | |
74 def help(ui, cmd=None): | 125 def help(ui, cmd=None): |
75 '''show help for a given command or all commands''' | 126 '''show help for a given command or all commands''' |
76 if cmd: | 127 if cmd: |
77 try: | 128 try: |
78 i = find(cmd) | 129 i = find(cmd) |
246 def forget(ui, repo, file, *files): | 297 def forget(ui, repo, file, *files): |
247 """don't add the specified files on the next commit""" | 298 """don't add the specified files on the next commit""" |
248 repo.forget(relpath(repo, (file,) + files)) | 299 repo.forget(relpath(repo, (file,) + files)) |
249 | 300 |
250 def heads(ui, repo): | 301 def heads(ui, repo): |
251 '''show current repository heads''' | 302 """show current repository heads""" |
252 for n in repo.changelog.heads(): | 303 for n in repo.changelog.heads(): |
253 i = repo.changelog.rev(n) | 304 show_changeset(ui, repo, changenode=n) |
254 changes = repo.changelog.read(n) | |
255 (p1, p2) = repo.changelog.parents(n) | |
256 (h, h1, h2) = map(hg.hex, (n, p1, p2)) | |
257 (i1, i2) = map(repo.changelog.rev, (p1, p2)) | |
258 print "rev: %4d:%s" % (i, h) | |
259 print "parents: %4d:%s" % (i1, h1) | |
260 if i2: print " %4d:%s" % (i2, h2) | |
261 print "manifest: %4d:%s" % (repo.manifest.rev(changes[0]), | |
262 hg.hex(changes[0])) | |
263 print "user:", changes[1] | |
264 print "date:", time.asctime( | |
265 time.localtime(float(changes[2].split(' ')[0]))) | |
266 if ui.verbose: print "files:", " ".join(changes[3]) | |
267 print "description:" | |
268 print changes[4] | |
269 | 305 |
270 def history(ui, repo): | 306 def history(ui, repo): |
271 """show the changelog history""" | 307 """show the changelog history""" |
272 for i in range(repo.changelog.count() - 1, -1, -1): | 308 for i in range(repo.changelog.count() - 1, -1, -1): |
273 n = repo.changelog.node(i) | 309 show_changeset(ui, repo, rev=i) |
274 changes = repo.changelog.read(n) | |
275 (p1, p2) = repo.changelog.parents(n) | |
276 (h, h1, h2) = map(hg.hex, (n, p1, p2)) | |
277 (i1, i2) = map(repo.changelog.rev, (p1, p2)) | |
278 print "rev: %4d:%s" % (i, h) | |
279 print "parents: %4d:%s" % (i1, h1) | |
280 if i2: print " %4d:%s" % (i2, h2) | |
281 print "manifest: %4d:%s" % (repo.manifest.rev(changes[0]), | |
282 hg.hex(changes[0])) | |
283 print "user:", changes[1] | |
284 print "date:", time.asctime( | |
285 time.localtime(float(changes[2].split(' ')[0]))) | |
286 if ui.verbose: print "files:", " ".join(changes[3]) | |
287 print "description:" | |
288 print changes[4] | |
289 | 310 |
290 def init(ui, source=None): | 311 def init(ui, source=None): |
291 """create a new repository or copy an existing one""" | 312 """create a new repository or copy an existing one""" |
292 | 313 |
293 if source: | 314 if source: |
314 other = hg.repository(ui, source) | 335 other = hg.repository(ui, source) |
315 cg = repo.getchangegroup(other) | 336 cg = repo.getchangegroup(other) |
316 repo.addchangegroup(cg) | 337 repo.addchangegroup(cg) |
317 else: | 338 else: |
318 hg.repository(ui, ".", create=1) | 339 hg.repository(ui, ".", create=1) |
319 | 340 |
320 def log(ui, repo, f): | 341 def log(ui, repo, f): |
321 """show the revision history of a single file""" | 342 """show the revision history of a single file""" |
322 f = relpath(repo, [f])[0] | 343 f = relpath(repo, [f])[0] |
323 | 344 |
324 r = repo.file(f) | 345 r = repo.file(f) |
325 for i in range(r.count() - 1, -1, -1): | 346 for i in range(r.count() - 1, -1, -1): |
326 n = r.node(i) | 347 show_changeset(ui, repo, filelog=r, rev=i) |
327 (p1, p2) = r.parents(n) | |
328 (h, h1, h2) = map(hg.hex, (n, p1, p2)) | |
329 (i1, i2) = map(r.rev, (p1, p2)) | |
330 cr = r.linkrev(n) | |
331 cn = hg.hex(repo.changelog.node(cr)) | |
332 print "rev: %4d:%s" % (i, h) | |
333 print "changeset: %4d:%s" % (cr, cn) | |
334 print "parents: %4d:%s" % (i1, h1) | |
335 if i2: print " %4d:%s" % (i2, h2) | |
336 changes = repo.changelog.read(repo.changelog.node(cr)) | |
337 print "user: %s" % changes[1] | |
338 print "date: %s" % time.asctime( | |
339 time.localtime(float(changes[2].split(' ')[0]))) | |
340 print "description:" | |
341 print changes[4].rstrip() | |
342 print | |
343 | 348 |
344 def manifest(ui, repo, rev = []): | 349 def manifest(ui, repo, rev = []): |
345 """output the latest or given revision of the project manifest""" | 350 """output the latest or given revision of the project manifest""" |
346 n = repo.manifest.tip() | 351 n = repo.manifest.tip() |
347 if rev: | 352 if rev: |
361 else: | 366 else: |
362 p = repo.dirstate.parents() | 367 p = repo.dirstate.parents() |
363 | 368 |
364 for n in p: | 369 for n in p: |
365 if n != hg.nullid: | 370 if n != hg.nullid: |
366 ui.write("%d:%s\n" % (repo.changelog.rev(n), hg.hex(n))) | 371 show_changeset(ui, repo, changenode=n) |
367 | 372 |
368 def patch(ui, repo, patch1, *patches, **opts): | 373 def patch(ui, repo, patch1, *patches, **opts): |
369 """import an ordered set of patches""" | 374 """import an ordered set of patches""" |
370 try: | 375 try: |
371 import psyco | 376 import psyco |
517 print "%-30s %5d:%s" % (k, repo.changelog.rev(n), hg.hex(n)) | 522 print "%-30s %5d:%s" % (k, repo.changelog.rev(n), hg.hex(n)) |
518 | 523 |
519 def tip(ui, repo): | 524 def tip(ui, repo): |
520 """show the tip revision""" | 525 """show the tip revision""" |
521 n = repo.changelog.tip() | 526 n = repo.changelog.tip() |
522 t = repo.changelog.rev(n) | 527 show_changeset(ui, repo, changenode=n) |
523 ui.status("%d:%s\n" % (t, hg.hex(n))) | |
524 | 528 |
525 def undo(ui, repo): | 529 def undo(ui, repo): |
526 """undo the last transaction""" | 530 """undo the last transaction""" |
527 repo.undo() | 531 repo.undo() |
528 | 532 |