comparison mercurial/commands.py @ 3574:8d87c8d45b3d

log speedup: use parentrevs in log and changeset_printer.show
author Alexis S. L. Carvalho <alexis@cecm.usp.br>
date Sat, 28 Oct 2006 20:21:56 -0300
parents 31401776153f
children 0facae7566cc
comparison
equal deleted inserted replaced
3573:31401776153f 3574:8d87c8d45b3d
318 extra = changes[5] 318 extra = changes[5]
319 branch = extra.get("branch") 319 branch = extra.get("branch")
320 320
321 hexfunc = self.ui.debugflag and hex or short 321 hexfunc = self.ui.debugflag and hex or short
322 322
323 parents = [(log.rev(p), hexfunc(p)) for p in log.parents(changenode) 323 parents = [(p, hexfunc(log.node(p))) for p in log.parentrevs(rev)
324 if self.ui.debugflag or p != nullid] 324 if self.ui.debugflag or p != -1]
325 if (not self.ui.debugflag and len(parents) == 1 and 325 if (not self.ui.debugflag and len(parents) == 1 and
326 parents[0][0] == rev-1): 326 parents[0][0] == rev-1):
327 parents = [] 327 parents = []
328 328
329 self.ui.write(_("changeset: %d:%s\n") % (rev, hexfunc(changenode))) 329 self.ui.write(_("changeset: %d:%s\n") % (rev, hexfunc(changenode)))
1884 du = dui(ui) 1884 du = dui(ui)
1885 displayer.ui = du 1885 displayer.ui = du
1886 elif st == 'add': 1886 elif st == 'add':
1887 du.bump(rev) 1887 du.bump(rev)
1888 changenode = repo.changelog.node(rev) 1888 changenode = repo.changelog.node(rev)
1889 parents = [p for p in repo.changelog.parents(changenode) 1889 parents = [p for p in repo.changelog.parentrevs(rev) if p != -1]
1890 if p != nullid]
1891 if opts['no_merges'] and len(parents) == 2: 1890 if opts['no_merges'] and len(parents) == 2:
1892 continue 1891 continue
1893 if opts['only_merges'] and len(parents) != 2: 1892 if opts['only_merges'] and len(parents) != 2:
1894 continue 1893 continue
1895 1894
1916 rename = getrenamed(fn, rev, mf) 1915 rename = getrenamed(fn, rev, mf)
1917 if rename: 1916 if rename:
1918 copies.append((fn, rename[0])) 1917 copies.append((fn, rename[0]))
1919 displayer.show(rev, brinfo=br, copies=copies) 1918 displayer.show(rev, brinfo=br, copies=copies)
1920 if opts['patch']: 1919 if opts['patch']:
1921 prev = (parents and parents[0]) or nullid 1920 if parents:
1921 prev = parents[0]
1922 else:
1923 prev = -1
1924 prev = repo.changelog.node(prev)
1922 patch.diff(repo, prev, changenode, match=matchfn, fp=du) 1925 patch.diff(repo, prev, changenode, match=matchfn, fp=du)
1923 du.write("\n\n") 1926 du.write("\n\n")
1924 elif st == 'iter': 1927 elif st == 'iter':
1925 if count == limit: break 1928 if count == limit: break
1926 if du.header[rev]: 1929 if du.header[rev]: