--- a/hg Sat Jun 04 12:24:23 2005 -0800
+++ b/hg Sat Jun 04 13:45:31 2005 -0800
@@ -17,105 +17,7 @@
# pass
import sys
-from mercurial import hg, fancyopts, ui, commands
-
-try:
- sys.exit(commands.dispatch(sys.argv[1:]))
-except commands.UnknownCommand:
- # fall through
- pass
-
-options = {}
-opts = [('v', 'verbose', None, 'verbose'),
- ('d', 'debug', None, 'debug'),
- ('q', 'quiet', None, 'quiet'),
- ('y', 'noninteractive', None, 'run non-interactively'),
- ]
-
-args = fancyopts.fancyopts(sys.argv[1:], opts, options,
- 'hg [options] <command> [command options] [files]')
-
-try:
- cmd = args[0]
- args = args[1:]
-except:
- cmd = "help"
-
-ui = ui.ui(options["verbose"], options["debug"], options["quiet"],
- not options["noninteractive"])
-
-try:
- repo = hg.repository(ui=ui)
-except IOError:
- ui.warn("Unable to open repository\n")
- sys.exit(0)
-
-if cmd == "debugchangegroup":
- newer = repo.newer(map(repo.lookup, args))
- for chunk in repo.changegroup(newer):
- sys.stdout.write(chunk)
-
-elif cmd == "debugaddchangegroup":
- data = sys.stdin.read()
- repo.addchangegroup(data)
-
-elif cmd == "dump":
- if args:
- r = repo.file(args[0])
- n = r.tip()
- if len(args) > 1: n = r.lookup(args[1])
- sys.stdout.write(r.read(n))
- else:
- print "missing filename"
+from mercurial import commands
-elif cmd == "dumpmanifest":
- n = repo.manifest.tip()
- if len(args) > 0:
- n = repo.manifest.lookup(args[0])
- m = repo.manifest.read(n)
- files = m.keys()
- files.sort()
-
- for f in files:
- print hg.hex(m[f]), f
-
-elif cmd == "debugindex":
- if ".hg" not in args[0]:
- args[0] = ".hg/data/" + repo.file(args[0]).encodepath(args[0]) + "i"
-
- r = hg.revlog(open, args[0], "")
- print " rev offset length base linkrev"+\
- " p1 p2 nodeid"
- for i in range(r.count()):
- e = r.index[i]
- print "% 6d % 9d % 7d % 6d % 7d %s.. %s.. %s.." % (
- i, e[0], e[1], e[2], e[3],
- hg.hex(e[4][:5]), hg.hex(e[5][:5]), hg.hex(e[6][:5]))
+sys.exit(commands.dispatch(sys.argv[1:]))
-elif cmd == "debugindexdot":
- if ".hg" not in args[0]:
- args[0] = ".hg/data/" + repo.file(args[0]).encodepath(args[0]) + "i"
-
- r = hg.revlog(open, args[0], "")
- print "digraph G {"
- for i in range(r.count()):
- e = r.index[i]
- print "\t%d -> %d" % (r.rev(e[4]), i)
- if e[5] != hg.nullid:
- print "\t%d -> %d" % (r.rev(e[5]), i)
- print "}"
-
-elif cmd == "tags":
- repo.lookup(0) # prime the cache
- i = repo.tags.items()
- i.sort()
- for k, n in i:
- try:
- r = repo.changelog.rev(n)
- except KeyError:
- r = "?"
- print "%-30s %5d:%s" % (k, repo.changelog.rev(n), hg.hex(n))
-
-else:
- if cmd: ui.warn("unknown command\n\n")
- sys.exit(1)
--- a/mercurial/commands.py Sat Jun 04 12:24:23 2005 -0800
+++ b/mercurial/commands.py Sat Jun 04 13:45:31 2005 -0800
@@ -151,6 +151,12 @@
# this should eventually support remote repos
os.system("cp -al %s/.hg .hg" % path)
+def cat(ui, repo, file, rev = []):
+ r = repo.file(file)
+ n = r.tip()
+ if rev: n = r.lookup(rev)
+ sys.stdout.write(r.read(n))
+
def checkout(ui, repo, changeset=None):
'''checkout a given changeset or the current tip'''
(c, a, d, u) = repo.diffdir(repo.root)
@@ -167,6 +173,35 @@
"""commit the specified files or all outstanding changes"""
repo.commit(relpath(repo, files))
+def debugaddchangegroup(ui, repo):
+ data = sys.stdin.read()
+ repo.addchangegroup(data)
+
+def debugchangegroup(ui, repo, roots):
+ newer = repo.newer(map(repo.lookup, roots))
+ for chunk in repo.changegroup(newer):
+ sys.stdout.write(chunk)
+
+def debugindex(ui, file):
+ r = hg.revlog(open, file, "")
+ print " rev offset length base linkrev"+\
+ " p1 p2 nodeid"
+ for i in range(r.count()):
+ e = r.index[i]
+ print "% 6d % 9d % 7d % 6d % 7d %s.. %s.. %s.." % (
+ i, e[0], e[1], e[2], e[3],
+ hg.hex(e[4][:5]), hg.hex(e[5][:5]), hg.hex(e[6][:5]))
+
+def debugindexdot(ui, file):
+ r = hg.revlog(open, file, "")
+ print "digraph G {"
+ for i in range(r.count()):
+ e = r.index[i]
+ print "\t%d -> %d" % (r.rev(e[4]), i)
+ if e[5] != hg.nullid:
+ print "\t%d -> %d" % (r.rev(e[5]), i)
+ print "}"
+
def diff(ui, repo, *files, **opts):
revs = []
if opts['rev']:
@@ -300,6 +335,17 @@
print changes[4].rstrip()
print
+def manifest(ui, repo, rev = []):
+ n = repo.manifest.tip()
+ if rev:
+ n = repo.manifest.lookup(rev)
+ m = repo.manifest.read(n)
+ files = m.keys()
+ files.sort()
+
+ for f in files:
+ print hg.hex(m[f]), f
+
def parents(ui, repo, node = None):
'''show the parents of the current working dir'''
if node:
@@ -381,6 +427,17 @@
for f in d: print "R", f
for f in u: print "?", f
+def tags(ui, repo):
+ repo.lookup(0) # prime the cache
+ i = repo.tags.items()
+ i.sort()
+ for k, n in i:
+ try:
+ r = repo.changelog.rev(n)
+ except KeyError:
+ r = "?"
+ print "%-30s %5d:%s" % (k, repo.changelog.rev(n), hg.hex(n))
+
def tip(ui, repo):
n = repo.changelog.tip()
t = repo.changelog.rev(n)
@@ -403,8 +460,13 @@
('c', 'changeset', None, 'show changeset')],
'hg annotate [-u] [-c] [-n] [-r id] [files]'),
"branch|clone": (branch, [], 'hg branch [path]'),
+ "cat|dump": (cat, [], 'hg cat <file> [rev]'),
"checkout|co": (checkout, [], 'hg checkout [changeset]'),
"commit|ci": (commit, [], 'hg commit [files]'),
+ "debugaddchangegroup": (debugaddchangegroup, [], 'debugaddchangegroup'),
+ "debugchangegroup": (debugchangegroup, [], 'debugchangegroup [roots]'),
+ "debugindex": (debugindex, [], 'debugindex <file>'),
+ "debugindexdot": (debugindexdot, [], 'debugindexdot <file>'),
"diff": (diff, [('r', 'rev', [], 'revision')],
'hg diff [-r A] [-r B] [files]'),
"export": (export, [], "hg export <changeset>"),
@@ -414,6 +476,7 @@
"help": (help, [], 'hg help [command]'),
"init": (init, [], 'hg init'),
"log": (log, [], 'hg log <file>'),
+ "manifest|dumpmanifest": (manifest, [], 'hg manifest [rev]'),
"parents": (parents, [], 'hg parents [node]'),
"patch|import": (patch,
[('p', 'strip', 1, 'path strip'),
@@ -438,12 +501,13 @@
('t', 'templates', "", 'template map')],
"hg serve [options]"),
"status": (status, [], 'hg status'),
+ "tags": (tags, [], 'hg tags'),
"tip": (tip, [], 'hg tip'),
"undo": (undo, [], 'hg undo'),
"verify": (verify, [], 'hg verify'),
}
-norepo = "init branch help"
+norepo = "init branch help debugindex debugindexdot"
def find(cmd):
i = None