changeset 213:d2172916ef6c

commands: migrate status and branch -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 commands: migrate status and branch manifest hash: 7d893a81a81539173fc74d86152062a1a70bed13 -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCnhESywK+sNU5EO8RAlBJAKCmv2gHefMOXfX/UUCy1tfV0cOqOQCfbeX8 oaT15B7GBL2lcalGrPXkzY8= =8gVe -----END PGP SIGNATURE-----
author mpm@selenic.com
date Wed, 01 Jun 2005 11:48:34 -0800
parents 48398a5353e3
children 2d60aa9bde0a
files hg mercurial/commands.py
diffstat 2 files changed, 39 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/hg	Wed Jun 01 11:11:19 2005 -0800
+++ b/hg	Wed Jun 01 11:48:34 2005 -0800
@@ -119,21 +119,11 @@
 ui = ui.ui(options["verbose"], options["debug"], options["quiet"],
            not options["noninteractive"])
     
-if cmd == "init":
-    repo = hg.repository(ui, ".", create=1)
-    sys.exit(0)
-elif cmd == "branch" or cmd == "clone":
-    os.system("cp -al %s/.hg .hg" % args[0])
+try:
+    repo = hg.repository(ui=ui)
+except IOError:
+    ui.warn("Unable to open repository\n")
     sys.exit(0)
-elif cmd == "help":
-    help()
-    sys.exit(0)
-else:
-    try:
-        repo = hg.repository(ui=ui)
-    except IOError:
-        ui.warn("Unable to open repository\n")
-        sys.exit(0)
 
 relpath = None
 if os.getcwd() != repo.root:
@@ -221,15 +211,6 @@
                 raise "patch failed!"
         repo.commit(repo.current, files, text)
 
-elif cmd == "status":
-    (c, a, d) = repo.diffdir(repo.root, repo.current)
-    if relpath:
-        (c, a, d) = map(lambda x: filterfiles(x, [ relpath ]), (c, a, d))
-
-    for f in c: print "C", f
-    for f in a: print "?", f
-    for f in d: print "R", f
-
 elif cmd == "diff":
     revs = []
 
--- a/mercurial/commands.py	Wed Jun 01 11:11:19 2005 -0800
+++ b/mercurial/commands.py	Wed Jun 01 11:48:34 2005 -0800
@@ -3,6 +3,20 @@
 
 class UnknownCommand(Exception): pass
 
+def filterfiles(list, files):
+    l = [ x for x in list if x in files ]
+
+    for f in files:
+        if f[-1] != os.sep: f += os.sep
+        l += [ x for x in list if x.startswith(f) ]
+    return l
+
+def relfilter(repo, args):
+    if os.getcwd() != repo.root:
+        p = os.getcwd()[len(repo.root) + 1: ]
+        return filterfiles(p, args)
+    return args
+
 def relpath(repo, args):
     if os.getcwd() != repo.root:
         p = os.getcwd()[len(repo.root) + 1: ]
@@ -49,6 +63,11 @@
     """create a repository"""
     hg.repository(ui, ".", create=1)
 
+def branch(ui, path):
+    '''branch from a local repository'''
+    # this should eventually support remote repos
+    os.system("cp -al %s/.hg .hg" % path)
+
 def checkout(u, repo, changeset=None):
     '''checkout a given changeset or the current tip'''
     node = repo.changelog.tip()
@@ -98,11 +117,26 @@
         for p,l in zip(zip(*pieces), lines):
             u.write(" ".join(p) + ": " + l[1])
 
+def status(ui, repo):
+    '''show changed files in the working directory
+
+C = changed
+A = added
+R = removed
+? = not tracked'''
+    (c, a, d) = repo.diffdir(repo.root, repo.current)
+    (c, a, d) = map(lambda x: relfilter(repo, x), (c, a, d))
+
+    for f in c: print "C", f
+    for f in a: print "?", f
+    for f in d: print "R", f
+
 def undo(ui, repo):
     repo.undo()
 
 table = {
     "init": (init, [], 'hg init'),
+    "branch|clone": (branch, [], 'hg branch [path]'),
     "help": (help, [], 'hg help [command]'),
     "checkout|co": (checkout, [], 'hg checkout [changeset]'),
     "ann|annotate": (annotate,
@@ -111,6 +145,7 @@
                       ('n', 'number', None, 'show revision number'),
                       ('c', 'changeset', None, 'show changeset')],
                      'hg annotate [-u] [-c] [-n] [-r id] [files]'),
+    "status": (status, [], 'hg status'),
     "undo": (undo, [], 'hg undo'),
     }