Show More
@@ -748,7 +748,8 b' def perffncacheencode(ui, repo, **opts):' | |||||
748 | fm.end() |
|
748 | fm.end() | |
749 |
|
749 | |||
750 | @command('perfbdiff', revlogopts + formatteropts + [ |
|
750 | @command('perfbdiff', revlogopts + formatteropts + [ | |
751 |
('', 'count', 1, 'number of revisions to test (when using --startrev)') |
|
751 | ('', 'count', 1, 'number of revisions to test (when using --startrev)'), | |
|
752 | ('', 'alldata', False, 'test bdiffs for all associated revisions')], | |||
752 | '-c|-m|FILE REV') |
|
753 | '-c|-m|FILE REV') | |
753 | def perfbdiff(ui, repo, file_, rev=None, count=None, **opts): |
|
754 | def perfbdiff(ui, repo, file_, rev=None, count=None, **opts): | |
754 | """benchmark a bdiff between revisions |
|
755 | """benchmark a bdiff between revisions | |
@@ -757,7 +758,14 b' def perfbdiff(ui, repo, file_, rev=None,' | |||||
757 |
|
758 | |||
758 | With ``--count``, benchmark bdiffs between delta parents and self for N |
|
759 | With ``--count``, benchmark bdiffs between delta parents and self for N | |
759 | revisions starting at the specified revision. |
|
760 | revisions starting at the specified revision. | |
|
761 | ||||
|
762 | With ``--alldata``, assume the requested revision is a changeset and | |||
|
763 | measure bdiffs for all changes related to that changeset (manifest | |||
|
764 | and filelogs). | |||
760 | """ |
|
765 | """ | |
|
766 | if opts['alldata']: | |||
|
767 | opts['changelog'] = True | |||
|
768 | ||||
761 | if opts.get('changelog') or opts.get('manifest'): |
|
769 | if opts.get('changelog') or opts.get('manifest'): | |
762 | file_, rev = None, file_ |
|
770 | file_, rev = None, file_ | |
763 | elif rev is None: |
|
771 | elif rev is None: | |
@@ -769,8 +777,25 b' def perfbdiff(ui, repo, file_, rev=None,' | |||||
769 |
|
777 | |||
770 | startrev = r.rev(r.lookup(rev)) |
|
778 | startrev = r.rev(r.lookup(rev)) | |
771 | for rev in range(startrev, min(startrev + count, len(r) - 1)): |
|
779 | for rev in range(startrev, min(startrev + count, len(r) - 1)): | |
772 | dp = r.deltaparent(rev) |
|
780 | if opts['alldata']: | |
773 | textpairs.append((r.revision(dp), r.revision(rev))) |
|
781 | # Load revisions associated with changeset. | |
|
782 | ctx = repo[rev] | |||
|
783 | mtext = repo.manifest.revision(ctx.manifestnode()) | |||
|
784 | for pctx in ctx.parents(): | |||
|
785 | pman = repo.manifest.revision(pctx.manifestnode()) | |||
|
786 | textpairs.append((pman, mtext)) | |||
|
787 | ||||
|
788 | # Load filelog revisions by iterating manifest delta. | |||
|
789 | man = ctx.manifest() | |||
|
790 | pman = ctx.p1().manifest() | |||
|
791 | for filename, change in pman.diff(man).items(): | |||
|
792 | fctx = repo.file(filename) | |||
|
793 | f1 = fctx.revision(change[0][0] or -1) | |||
|
794 | f2 = fctx.revision(change[1][0] or -1) | |||
|
795 | textpairs.append((f1, f2)) | |||
|
796 | else: | |||
|
797 | dp = r.deltaparent(rev) | |||
|
798 | textpairs.append((r.revision(dp), r.revision(rev))) | |||
774 |
|
799 | |||
775 | def d(): |
|
800 | def d(): | |
776 | for pair in textpairs: |
|
801 | for pair in textpairs: |
General Comments 0
You need to be logged in to leave comments.
Login now