Mercurial > hg > pyhgsh
diff hg @ 64:b3e2ddff0159
Diff in subdirectories from Jake Edge
Dates in diff
Fix O(n^2) behaviour of manifest diff
Add a/ and b/ to work with patch -p1
author | mpm@selenic.com |
---|---|
date | Thu, 12 May 2005 17:54:55 -0800 |
parents | 022d98aa0a2a |
children | d40cc5aacc31 |
line wrap: on
line diff
--- a/hg Thu May 12 01:23:51 2005 -0800 +++ b/hg Thu May 12 17:54:55 2005 -0800 @@ -48,20 +48,25 @@ return l def diff(files = None, node1 = None, node2 = None): + def date(c): + return time.asctime(time.gmtime(float(c[2].split(' ')[0]))) if node2: change = repo.changelog.read(node2) mmap2 = repo.manifest.read(change[0]) (c, a, d) = repo.diffrevs(node1, node2) def read(f): return repo.file(f).read(mmap2[f]) + date2 = date(change) else: + date2 = time.asctime() if not node1: node1 = repo.current (c, a, d) = repo.diffdir(repo.root, node1) - def read(f): return file(f).read() + def read(f): return file(os.path.join(repo.root, f)).read() change = repo.changelog.read(node1) mmap = repo.manifest.read(change[0]) + date1 = date(change) if files: (c, a, d) = map(lambda x: filterfiles(x, files), (c, a, d)) @@ -69,16 +74,15 @@ for f in c: to = repo.file(f).read(mmap[f]) tn = read(f) - sys.stdout.write(mdiff.unidiff(to, tn, f)) + sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) for f in a: to = "" tn = read(f) - sys.stdout.write(mdiff.unidiff(to, tn, f)) + sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) for f in d: to = repo.file(f).read(mmap[f]) tn = "" - sys.stdout.write(mdiff.unidiff(to, tn, f)) - + sys.stdout.write(mdiff.unidiff(to, date1, tn, date2, f)) options = {} opts = [('v', 'verbose', None, 'verbose'), @@ -178,8 +182,13 @@ if len(revs) > 2: print "too many revisions to diff" sys.exit(1) - else: - diff(args, *revs) + + if os.getcwd() != repo.root: + relpath = os.getcwd()[len(repo.root) + 1: ] + if not args: args = [ relpath ] + else: args = [ os.path.join(relpath, x) for x in args ] + + diff(args, *revs) elif cmd == "export": node = repo.changelog.lookup(args[0])