added hg identify|id (based on a patch from Andrew Thompson)
authorThomas Arendsen Hein <thomas@intevation.de>
Wed, 15 Jun 2005 06:44:43 +0100
changeset 339 a76fc9c4b67b
parent 338 1e091b3293d5
child 340 97a897d32dfc
added hg identify|id (based on a patch from Andrew Thompson) -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 added hg identify|id (based on a patch from Andrew Thompson) manifest hash: b8f801efb6cf14a6d754fed2cf47149f4e77b3cc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.1 (GNU/Linux) iD8DBQFCr8BLW7P1GVgWeRoRAj3+AJ4jIvfBnu6vbF+SOS2ybVTboXe7pACfZkkT 2G2bbxYowVnrytOXVg6BhlU= =wNpZ -----END PGP SIGNATURE-----
mercurial/commands.py
--- a/mercurial/commands.py	Tue Jun 14 18:37:53 2005 -0800
+++ b/mercurial/commands.py	Wed Jun 15 06:44:43 2005 +0100
@@ -126,6 +126,18 @@
             ui.status("summary:     %s\n" % description[0])
     ui.status("\n")
 
+def tags_load(repo):
+    repo.lookup(0) # prime the cache
+    i = repo.tags.items()
+    n = []
+    for e in i:
+        try:
+            l = repo.changelog.rev(e[1])
+        except KeyError:
+            l = -2
+        n.append((l, e))
+    return n
+
 def help(ui, cmd=None):
     '''show help for a given command or all commands'''
     if cmd:
@@ -312,6 +324,22 @@
     for i in range(repo.changelog.count() - 1, -1, -1):
         show_changeset(ui, repo, rev=i)
 
+def identify(ui, repo):
+    """print information about the working copy"""
+    (c, a, d, u) = repo.diffdir(repo.root)
+    mflag = (c or a or d or u) and "+" or ""
+    parents = [parent for parent in repo.dirstate.parents()
+                      if parent != hg.nullid]
+    tstring = ''
+    if not ui.quiet:
+        taglist = [e[1] for e in tags_load(repo)]
+        tstring = " %s" % ' + '.join([e[0] for e in taglist
+                                      if e[0] != 'tip' and e[1] in parents])
+
+    hexfunc = ui.verbose and hg.hex or hg.short
+    pstring = '+'.join([hexfunc(parent) for parent in parents])
+    ui.write("%s%s%s\n" % (pstring, mflag, tstring))
+
 def init(ui, source=None):
     """create a new repository or copy an existing one"""
 
@@ -512,15 +540,7 @@
 
 def tags(ui, repo):
     """list repository tags"""
-    repo.lookup(0) # prime the cache
-    i = repo.tags.items()
-    n = []
-    for e in i:
-        try:
-            l = repo.changelog.rev(e[1])
-        except KeyError:
-            l = -2
-        n.append((l, e))
+    n = tags_load(repo)
 
     n.sort()
     n.reverse()
@@ -590,6 +610,7 @@
     "heads": (heads, [], 'hg heads'),
     "history": (history, [], 'hg history'),
     "help": (help, [], 'hg help [command]'),
+    "identify|id": (identify, [], 'hg identify'),
     "init": (init, [], 'hg init [url]'),
     "log": (log, [], 'hg log <file>'),
     "manifest|dumpmanifest": (manifest, [], 'hg manifest [rev]'),