comparison hgext/hgk.py @ 3063:aa1cee5b8afb

hgk.py: add an optional file list to debug-diff-tree this solves a problem when hgk was trying to display merges diff
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Wed, 06 Sep 2006 02:13:08 +0200
parents 3dab573a4330
children fe5c92529d1c
comparison
equal deleted inserted replaced
3062:5e39ad2c8b52 3063:aa1cee5b8afb
59 to = repo.file(f).read(mmap[f]) 59 to = repo.file(f).read(mmap[f])
60 tn = None 60 tn = None
61 fp.write("diff --git a/%s /dev/null\n" % (f)) 61 fp.write("diff --git a/%s /dev/null\n" % (f))
62 fp.write(mdiff.unidiff(to, date1, tn, date2, f, None, opts=opts)) 62 fp.write(mdiff.unidiff(to, date1, tn, date2, f, None, opts=opts))
63 63
64 def difftree(ui, repo, node1=None, node2=None, **opts): 64 def difftree(ui, repo, node1=None, node2=None, *files, **opts):
65 """diff trees from two commits""" 65 """diff trees from two commits"""
66 def __difftree(repo, node1, node2): 66 def __difftree(repo, node1, node2, files=[]):
67 def date(c): 67 def date(c):
68 return time.asctime(time.gmtime(c[2][0])) 68 return time.asctime(time.gmtime(c[2][0]))
69 69
70 if node2: 70 if node2:
71 change = repo.changelog.read(node2) 71 change = repo.changelog.read(node2)
72 mmap2 = repo.manifest.read(change[0]) 72 mmap2 = repo.manifest.read(change[0])
73 modified, added, removed, deleted, unknown = repo.status(node1, node2)[:5] 73 status = repo.status(node1, node2, files=files)[:5]
74 modified, added, removed, deleted, unknown = status
74 def read(f): return repo.file(f).read(mmap2[f]) 75 def read(f): return repo.file(f).read(mmap2[f])
75 date2 = date(change) 76 date2 = date(change)
76 else: 77 else:
77 date2 = time.asctime() 78 date2 = time.asctime()
78 modified, added, removed, deleted, unknown = repo.status(node1)[:5] 79 status = repo.status(node1, files=files)[:5]
80 modified, added, removed, deleted, unknown = status
79 if not node1: 81 if not node1:
80 node1 = repo.dirstate.parents()[0] 82 node1 = repo.dirstate.parents()[0]
81 def read(f): return file(os.path.join(repo.root, f)).read() 83 def read(f): return file(os.path.join(repo.root, f)).read()
82 84
83 change = repo.changelog.read(node1) 85 change = repo.changelog.read(node1)
118 node2 = node1 120 node2 = node1
119 node1 = repo.changelog.parents(node1)[0] 121 node1 = repo.changelog.parents(node1)[0]
120 if opts['patch']: 122 if opts['patch']:
121 if opts['pretty']: 123 if opts['pretty']:
122 catcommit(repo, node2, "") 124 catcommit(repo, node2, "")
123 dodiff(sys.stdout, ui, repo, node1, node2) 125 dodiff(sys.stdout, ui, repo, node1, node2, files=files)
124 else: 126 else:
125 __difftree(repo, node1, node2) 127 __difftree(repo, node1, node2, files=files)
126 if not opts['stdin']: 128 if not opts['stdin']:
127 break 129 break
128 130
129 def catcommit(repo, n, prefix, changes=None): 131 def catcommit(repo, n, prefix, changes=None):
130 nlprefix = '\n' + prefix; 132 nlprefix = '\n' + prefix;
330 ('r', 'recursive', None, 'recursive'), 332 ('r', 'recursive', None, 'recursive'),
331 ('P', 'pretty', None, 'pretty'), 333 ('P', 'pretty', None, 'pretty'),
332 ('s', 'stdin', None, 'stdin'), 334 ('s', 'stdin', None, 'stdin'),
333 ('C', 'copy', None, 'detect copies'), 335 ('C', 'copy', None, 'detect copies'),
334 ('S', 'search', "", 'search')], 336 ('S', 'search', "", 'search')],
335 "hg git-diff-tree [options] node1 node2"), 337 "hg git-diff-tree [options] node1 node2 [files...]"),
336 "debug-cat-file": (catfile, [('s', 'stdin', None, 'stdin')], 338 "debug-cat-file": (catfile, [('s', 'stdin', None, 'stdin')],
337 "hg debug-cat-file [options] type file"), 339 "hg debug-cat-file [options] type file"),
338 "debug-merge-base": (base, [], "hg debug-merge-base node node"), 340 "debug-merge-base": (base, [], "hg debug-merge-base node node"),
339 "debug-rev-list": (revlist, [('H', 'header', None, 'header'), 341 "debug-rev-list": (revlist, [('H', 'header', None, 'header'),
340 ('t', 'topo-order', None, 'topo-order'), 342 ('t', 'topo-order', None, 'topo-order'),