Mercurial > hg-stable
comparison mercurial/commands.py @ 343:d7df759d0e97
rework all code using tags
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
rework all code using tags
Add three utility functions:
tags(): get (and possibly load) the tags mapping
tagslist(): sort tag,node by revision (aka topologically)
nodetags(): return a list of tags associated with a node (also cached)
Update all the code using tags to use these.
Simplify identify code
make unknown always visible if printed
don't ignore tip pseudo-tag
manifest hash: e6deb4d545ad465be7735f9ec43227bcb5e238c7
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCr+HjywK+sNU5EO8RAh4/AJ90cI0WxmvQAj6Lq2ZiG8LmqZan/QCfR8B5
ltu8tOIEHDa8LhfS9wtBu0k=
=pv3t
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Wed, 15 Jun 2005 00:08:03 -0800 |
parents | 97a897d32dfc |
children | b4e0e20646bb |
comparison
equal
deleted
inserted
replaced
342:f7c51058cbb7 | 343:d7df759d0e97 |
---|---|
124 ui.status("\n") | 124 ui.status("\n") |
125 else: | 125 else: |
126 ui.status("summary: %s\n" % description[0]) | 126 ui.status("summary: %s\n" % description[0]) |
127 ui.status("\n") | 127 ui.status("\n") |
128 | 128 |
129 def tags_load(repo): | |
130 repo.lookup(0) # prime the cache | |
131 i = repo.tags.items() | |
132 n = [] | |
133 for e in i: | |
134 try: | |
135 l = repo.changelog.rev(e[1]) | |
136 except KeyError: | |
137 l = -2 | |
138 n.append((l, e)) | |
139 return n | |
140 | |
141 def help(ui, cmd=None): | 129 def help(ui, cmd=None): |
142 '''show help for a given command or all commands''' | 130 '''show help for a given command or all commands''' |
143 if cmd: | 131 if cmd: |
144 try: | 132 try: |
145 i = find(cmd) | 133 i = find(cmd) |
326 | 314 |
327 def identify(ui, repo): | 315 def identify(ui, repo): |
328 """print information about the working copy""" | 316 """print information about the working copy""" |
329 (c, a, d, u) = repo.diffdir(repo.root) | 317 (c, a, d, u) = repo.diffdir(repo.root) |
330 mflag = (c or a or d or u) and "+" or "" | 318 mflag = (c or a or d or u) and "+" or "" |
331 parents = [parent for parent in repo.dirstate.parents() | 319 parents = [p for p in repo.dirstate.parents() if p != hg.nullid] |
332 if parent != hg.nullid] | |
333 if not parents: | 320 if not parents: |
334 ui.note("unknown\n") | 321 ui.write("unknown\n") |
335 return | 322 return |
336 | 323 |
337 tstring = '' | 324 tstring = '' |
338 if not ui.quiet: | 325 if not ui.quiet: |
339 taglist = [e[1] for e in tags_load(repo)] | 326 tags = sum(map(repo.nodetags, parents), []) |
340 tstring = " %s" % ' + '.join([e[0] for e in taglist | 327 tstring = " " + ' + '.join(tags) |
341 if e[0] != 'tip' and e[1] in parents]) | |
342 | 328 |
343 hexfunc = ui.verbose and hg.hex or hg.short | 329 hexfunc = ui.verbose and hg.hex or hg.short |
344 pstring = '+'.join([hexfunc(parent) for parent in parents]) | 330 pstring = '+'.join([hexfunc(parent) for parent in parents]) |
345 ui.write("%s%s%s\n" % (pstring, mflag, tstring)) | 331 ui.write("%s%s%s\n" % (pstring, mflag, tstring)) |
346 | 332 |
542 for f in d: print "R", f | 528 for f in d: print "R", f |
543 for f in u: print "?", f | 529 for f in u: print "?", f |
544 | 530 |
545 def tags(ui, repo): | 531 def tags(ui, repo): |
546 """list repository tags""" | 532 """list repository tags""" |
547 n = tags_load(repo) | 533 |
548 | 534 l = repo.tagslist() |
549 n.sort() | 535 l.reverse() |
550 n.reverse() | 536 for t,n in l: |
551 i = [ e[1] for e in n ] | |
552 for k, n in i: | |
553 try: | 537 try: |
554 r = repo.changelog.rev(n) | 538 r = repo.changelog.rev(n) |
555 except KeyError: | 539 except KeyError: |
556 r = "?" | 540 r = "?" |
557 print "%-30s %5d:%s" % (k, repo.changelog.rev(n), hg.hex(n)) | 541 print "%-30s %5d:%s" % (t, repo.changelog.rev(n), hg.hex(n)) |
558 | 542 |
559 def tip(ui, repo): | 543 def tip(ui, repo): |
560 """show the tip revision""" | 544 """show the tip revision""" |
561 n = repo.changelog.tip() | 545 n = repo.changelog.tip() |
562 show_changeset(ui, repo, changenode=n) | 546 show_changeset(ui, repo, changenode=n) |