Mercurial > public > mercurial-scm > hg
comparison mercurial/commands.py @ 312:09375250eb31
Optimize diff and status in subdirectories
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Optimize diff and status in subdirectories
This walks the tree from the subdirectory down.
Based on a patch by Arun Sharma
manifest hash: 3a8545369b4eb6911b9d0fcdd8e4dc77784fa3d8
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)
iD8DBQFCrF6/ywK+sNU5EO8RAosUAKC0KWcMfsLErEInDk1X1vpM54HFEgCfUwcN
gXhaAviQZJ8h0ssl3BMmMfI=
=KnRD
-----END PGP SIGNATURE-----
author | mpm@selenic.com |
---|---|
date | Sun, 12 Jun 2005 08:11:43 -0800 |
parents | 273f6a01d18b |
children | b18ce742566a |
comparison
equal
deleted
inserted
replaced
311:3b17056b72dc | 312:09375250eb31 |
---|---|
30 if os.getcwd() != repo.root: | 30 if os.getcwd() != repo.root: |
31 p = os.getcwd()[len(repo.root) + 1: ] | 31 p = os.getcwd()[len(repo.root) + 1: ] |
32 return [ os.path.normpath(os.path.join(p, x)) for x in args ] | 32 return [ os.path.normpath(os.path.join(p, x)) for x in args ] |
33 return args | 33 return args |
34 | 34 |
35 def dodiff(repo, files = None, node1 = None, node2 = None): | 35 def dodiff(repo, path, files = None, node1 = None, node2 = None): |
36 def date(c): | 36 def date(c): |
37 return time.asctime(time.gmtime(float(c[2].split(' ')[0]))) | 37 return time.asctime(time.gmtime(float(c[2].split(' ')[0]))) |
38 | 38 |
39 if node2: | 39 if node2: |
40 change = repo.changelog.read(node2) | 40 change = repo.changelog.read(node2) |
42 (c, a, d) = repo.diffrevs(node1, node2) | 42 (c, a, d) = repo.diffrevs(node1, node2) |
43 def read(f): return repo.file(f).read(mmap2[f]) | 43 def read(f): return repo.file(f).read(mmap2[f]) |
44 date2 = date(change) | 44 date2 = date(change) |
45 else: | 45 else: |
46 date2 = time.asctime() | 46 date2 = time.asctime() |
47 (c, a, d, u) = repo.diffdir(repo.root, node1) | 47 (c, a, d, u) = repo.diffdir(path, node1) |
48 if not node1: | 48 if not node1: |
49 node1 = repo.dirstate.parents()[0] | 49 node1 = repo.dirstate.parents()[0] |
50 def read(f): return file(os.path.join(repo.root, f)).read() | 50 def read(f): return file(os.path.join(repo.root, f)).read() |
51 | 51 |
52 change = repo.changelog.read(node1) | 52 change = repo.changelog.read(node1) |
222 if files: | 222 if files: |
223 files = relpath(repo, files) | 223 files = relpath(repo, files) |
224 else: | 224 else: |
225 files = relpath(repo, [""]) | 225 files = relpath(repo, [""]) |
226 | 226 |
227 dodiff(repo, files, *revs) | 227 dodiff(repo, os.getcwd(), files, *revs) |
228 | 228 |
229 def export(ui, repo, changeset): | 229 def export(ui, repo, changeset): |
230 """dump the changeset header and diffs for a revision""" | 230 """dump the changeset header and diffs for a revision""" |
231 node = repo.lookup(changeset) | 231 node = repo.lookup(changeset) |
232 prev, other = repo.changelog.parents(node) | 232 prev, other = repo.changelog.parents(node) |
239 if other != hg.nullid: | 239 if other != hg.nullid: |
240 print "# Parent %s" % hg.hex(other) | 240 print "# Parent %s" % hg.hex(other) |
241 print change[4].rstrip() | 241 print change[4].rstrip() |
242 print | 242 print |
243 | 243 |
244 dodiff(repo, None, prev, node) | 244 dodiff(repo, "", None, prev, node) |
245 | 245 |
246 def forget(ui, repo, file, *files): | 246 def forget(ui, repo, file, *files): |
247 """don't add the specified files on the next commit""" | 247 """don't add the specified files on the next commit""" |
248 repo.forget(relpath(repo, (file,) + files)) | 248 repo.forget(relpath(repo, (file,) + files)) |
249 | 249 |
447 | 447 |
448 C = changed | 448 C = changed |
449 A = added | 449 A = added |
450 R = removed | 450 R = removed |
451 ? = not tracked''' | 451 ? = not tracked''' |
452 | 452 |
453 (c, a, d, u) = repo.diffdir(repo.root) | 453 (c, a, d, u) = repo.diffdir(os.getcwd()) |
454 (c, a, d, u) = map(lambda x: relfilter(repo, x), (c, a, d, u)) | 454 (c, a, d, u) = map(lambda x: relfilter(repo, x), (c, a, d, u)) |
455 | 455 |
456 for f in c: print "C", f | 456 for f in c: print "C", f |
457 for f in a: print "A", f | 457 for f in a: print "A", f |
458 for f in d: print "R", f | 458 for f in d: print "R", f |