# HG changeset patch # User mpm@selenic.com # Date 1117655314 28800 # Node ID d2172916ef6c64001cf747040dd625db89b61929 # Parent 48398a5353e393f682c7455d0de7d44ded965d28 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----- diff -r 48398a5353e3 -r d2172916ef6c hg --- 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 = [] diff -r 48398a5353e3 -r d2172916ef6c mercurial/commands.py --- 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'), }