diff mercurial/commands.py @ 536:c15b4bc0a11c

Refactor diffrevs/diffdir into changes -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Refactor diffrevs/diffdir into changes Add dirstate.changes to replace most of diffdir Add localrepository.changes to replace diffrevs/diffdir This code can now efficiently check for changes in single files, and often without consulting the manifest. This should eventually make 'hg diff Makefile' in a large project much faster. This also fixes a bug where 'hg diff -r tip' failed to account for files that had been added but not committed yet. manifest hash: 20fde5d4b4cee49a76bcfe50f2dacf58b1f2258b -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCxMxpywK+sNU5EO8RAhzOAJ9VLQJoC+hiRYQtTSPbDhXBEJfQZwCgpDx9 GAwQ9jZHNsgXckBfXNCkJV8= =hMuc -----END PGP SIGNATURE-----
author mpm@selenic.com
date Thu, 30 Jun 2005 20:54:01 -0800
parents fba26990604a
children 411e05b04ffa
line wrap: on
line diff
--- a/mercurial/commands.py	Thu Jun 30 10:07:50 2005 -0800
+++ b/mercurial/commands.py	Thu Jun 30 20:54:01 2005 -0800
@@ -39,12 +39,12 @@
     if node2:
         change = repo.changelog.read(node2)
         mmap2 = repo.manifest.read(change[0])
-        (c, a, d) = repo.diffrevs(node1, node2)
+        (c, a, d, u) = repo.changes(node1, node2)
         def read(f): return repo.file(f).read(mmap2[f])
         date2 = date(change)
     else:
         date2 = time.asctime()
-        (c, a, d, u) = repo.diffdir(path, node1)
+        (c, a, d, u) = repo.changes(None, node1, path)
         if not node1:
             node1 = repo.dirstate.parents()[0]
         def read(f): return repo.wfile(f).read()
@@ -124,7 +124,7 @@
     ui.status("date:        %s\n" % time.asctime(
         time.localtime(float(changes[2].split(' ')[0]))))
     if ui.debugflag:
-        files = repo.diffrevs(changelog.parents(changenode)[0], changenode)
+        files = repo.changes(changelog.parents(changenode)[0], changenode)
         for key, value in zip(["files:", "files+:", "files-:"], files):
             if value:
                 ui.note("%-12s %s\n" % (key, " ".join(value)))
@@ -214,7 +214,7 @@
             elif s not in 'nmai' and isfile:
                 u.append(f)
     else:
-        (c, a, d, u) = repo.diffdir(repo.root)
+        (c, a, d, u) = repo.changes(None, None)
     repo.add(u)
     repo.remove(d)
 
@@ -447,7 +447,7 @@
         return
 
     hexfunc = ui.verbose and hg.hex or hg.short
-    (c, a, d, u) = repo.diffdir(repo.root)
+    (c, a, d, u) = repo.changes(None, None)
     output = ["%s%s" % ('+'.join([hexfunc(parent) for parent in parents]),
                         (c or a or d) and "+" or "")]
 
@@ -645,7 +645,7 @@
     R = removed
     ? = not tracked'''
 
-    (c, a, d, u) = repo.diffdir(os.getcwd())
+    (c, a, d, u) = repo.changes(None, None, os.getcwd())
     (c, a, d, u) = map(lambda x: relfilter(repo, x), (c, a, d, u))
 
     for f in c: print "C", f
@@ -660,7 +660,7 @@
 	ui.warn("abort: 'tip' is a reserved name!\n")
 	return -1
 
-    (c, a, d, u) = repo.diffdir(repo.root)
+    (c, a, d, u) = repo.changes(None, None)
     for x in (c, a, d, u):
 	if ".hgtags" in x:
 	    ui.warn("abort: working copy of .hgtags is changed!\n")