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 [ util.pconvert(os.path.normpath(os.path.join(p, x))) for x in args ] |
32 return [ util.pconvert(os.path.normpath(os.path.join(p, x))) for x in args ] |
33 return args |
33 return args |
34 |
34 |
35 def dodiff(ui, repo, path, files = None, node1 = None, node2 = None): |
35 def dodiff(ui, repo, 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 |
|
39 (c, a, d, u) = repo.changes(None, node1, files) |
|
40 if files: |
|
41 c, a, d = map(lambda x: filterfiles(files, x), (c, a, d)) |
|
42 |
|
43 if not c and not a and not d: |
|
44 return |
38 |
45 |
39 if node2: |
46 if node2: |
40 change = repo.changelog.read(node2) |
47 change = repo.changelog.read(node2) |
41 mmap2 = repo.manifest.read(change[0]) |
48 mmap2 = repo.manifest.read(change[0]) |
42 (c, a, d, u) = repo.changes(node1, node2) |
|
43 def read(f): return repo.file(f).read(mmap2[f]) |
49 def read(f): return repo.file(f).read(mmap2[f]) |
44 date2 = date(change) |
50 date2 = date(change) |
45 else: |
51 else: |
46 date2 = time.asctime() |
52 date2 = time.asctime() |
47 (c, a, d, u) = repo.changes(None, node1, path) |
|
48 if not node1: |
53 if not node1: |
49 node1 = repo.dirstate.parents()[0] |
54 node1 = repo.dirstate.parents()[0] |
50 def read(f): return repo.wfile(f).read() |
55 def read(f): return repo.wfile(f).read() |
51 |
56 |
52 if ui.quiet: |
57 if ui.quiet: |
56 r = [hexfunc(node) for node in [node1, node2] if node] |
61 r = [hexfunc(node) for node in [node1, node2] if node] |
57 |
62 |
58 change = repo.changelog.read(node1) |
63 change = repo.changelog.read(node1) |
59 mmap = repo.manifest.read(change[0]) |
64 mmap = repo.manifest.read(change[0]) |
60 date1 = date(change) |
65 date1 = date(change) |
61 |
|
62 if files: |
|
63 c, a, d = map(lambda x: filterfiles(files, x), (c, a, d)) |
|
64 |
66 |
65 for f in c: |
67 for f in c: |
66 to = None |
68 to = None |
67 if f in mmap: |
69 if f in mmap: |
68 to = repo.file(f).read(mmap[f]) |
70 to = repo.file(f).read(mmap[f]) |
409 if files: |
411 if files: |
410 files = relpath(repo, files) |
412 files = relpath(repo, files) |
411 else: |
413 else: |
412 files = relpath(repo, [""]) |
414 files = relpath(repo, [""]) |
413 |
415 |
414 dodiff(ui, repo, os.getcwd(), files, *revs) |
416 dodiff(ui, repo, files, *revs) |
415 |
417 |
416 def export(ui, repo, changeset): |
418 def export(ui, repo, changeset): |
417 """dump the changeset header and diffs for a revision""" |
419 """dump the changeset header and diffs for a revision""" |
418 node = repo.lookup(changeset) |
420 node = repo.lookup(changeset) |
419 prev, other = repo.changelog.parents(node) |
421 prev, other = repo.changelog.parents(node) |
426 if other != hg.nullid: |
428 if other != hg.nullid: |
427 print "# Parent %s" % hg.hex(other) |
429 print "# Parent %s" % hg.hex(other) |
428 print change[4].rstrip() |
430 print change[4].rstrip() |
429 print |
431 print |
430 |
432 |
431 dodiff(ui, repo, "", None, prev, node) |
433 dodiff(ui, repo, None, prev, node) |
432 |
434 |
433 def forget(ui, repo, file, *files): |
435 def forget(ui, repo, file, *files): |
434 """don't add the specified files on the next commit""" |
436 """don't add the specified files on the next commit""" |
435 repo.forget(relpath(repo, (file,) + files)) |
437 repo.forget(relpath(repo, (file,) + files)) |
436 |
438 |
643 C = changed |
645 C = changed |
644 A = added |
646 A = added |
645 R = removed |
647 R = removed |
646 ? = not tracked''' |
648 ? = not tracked''' |
647 |
649 |
648 (c, a, d, u) = repo.changes(None, None, os.getcwd()) |
650 (c, a, d, u) = repo.changes(None, None) |
649 (c, a, d, u) = map(lambda x: relfilter(repo, x), (c, a, d, u)) |
651 (c, a, d, u) = map(lambda x: relfilter(repo, x), (c, a, d, u)) |
650 |
652 |
651 for f in c: print "C", f |
653 for f in c: print "C", f |
652 for f in a: print "A", f |
654 for f in a: print "A", f |
653 for f in d: print "R", f |
655 for f in d: print "R", f |