At file:///home/pqm/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 3871
revision-id: [EMAIL PROTECTED]
parent: [EMAIL PROTECTED]
parent: [EMAIL PROTECTED]
committer: Canonical.com Patch Queue Manager <[EMAIL PROTECTED]>
branch nick: +trunk
timestamp: Fri 2008-11-28 03:51:41 +0000
message:
  Batch revision retrieval in InterDifferingSerializer to reduce the
        number of network round trips.
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
    ------------------------------------------------------------
    revno: 3831.2.3
    revision-id: [EMAIL PROTECTED]
    parent: [EMAIL PROTECTED]
    committer: Andrew Bennetts <[EMAIL PROTECTED]>
    branch nick: faster-differing-serialiser
    timestamp: Fri 2008-11-28 13:35:59 +1100
    message:
      Add NEWS entry.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
    ------------------------------------------------------------
    revno: 3831.2.2
    revision-id: [EMAIL PROTECTED]
    parent: [EMAIL PROTECTED]
    parent: [EMAIL PROTECTED]
    committer: Andrew Bennetts <[EMAIL PROTECTED]>
    branch nick: faster-differing-serialiser
    timestamp: Fri 2008-11-28 13:33:04 +1100
    message:
      Merge bzr.dev.
    added:
      bzrlib/foreign.py              
foreign.py-20081112170002-olsxmandkk8qyfuq-1
      bzrlib/tests/test_foreign.py   
test_foreign.py-20081125004048-ywb901edgp9lluxo-1
      contrib/convert_to_1.9.py      
convert_to_dev2.py-20081014130524-z1ydl3mq9b4ehlvv-1
      tools/win32/build_release.py   
build_release.py-20081105204355-2ghh5cv01v1x4rzz-1
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
      bzrlib/_readdir_pyx.pyx        
readdir.pyx-20060609152855-rm6v321vuaqyh9tu-1
      bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
      bzrlib/btree_index.py          index.py-20080624222253-p0x5f92uyh5hw734-7
      bzrlib/bugtracker.py           
bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
      bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
      bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
      bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
      bzrlib/help_topics/__init__.py 
help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
      bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
      bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
      bzrlib/lockable_files.py       
control_files.py-20051111201905-bb88546e799d669f
      bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
      bzrlib/mutabletree.py          
mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
      bzrlib/option.py               option.py-20051014052914-661fb36e76e7362f
      bzrlib/plugin.py               plugin.py-20050622060424-829b654519533d69
      bzrlib/plugins/launchpad/account.py 
account.py-20071011033320-50y6vfftywf4yllw-1
      bzrlib/plugins/launchpad/lp_directory.py 
lp_indirect.py-20070126012204-de5rugwlt22c7u7e-1
      bzrlib/plugins/launchpad/test_account.py 
test_account.py-20071011033320-50y6vfftywf4yllw-2
      bzrlib/python-compat.h         
pythoncompat.h-20080924041409-9kvi0fgtuuqp743j-1
      bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
      bzrlib/repofmt/pack_repo.py    
pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
      bzrlib/repofmt/weaverepo.py    
presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
      bzrlib/repository.py           
rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/shelf_ui.py             
shelver.py-20081005210102-33worgzwrtdw0yrm-1
      bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
      bzrlib/tests/blackbox/test_log.py 
test_log.py-20060112090212-78f6ea560c868e24
      bzrlib/tests/branch_implementations/test_sprout.py 
test_sprout.py-20070521151739-b8t8p7axw1h966ws-1
      bzrlib/tests/branch_implementations/test_stacking.py 
test_stacking.py-20080214020755-msjlkb7urobwly0f-1
      bzrlib/tests/commands/test_commit.py 
test_commit.py-20070913161801-ydrx2k5gmv7k7eiu-1
      bzrlib/tests/interrepository_implementations/test_fetch.py 
test_fetch.py-20080425213627-j60cjh782ufm83ry-1
      bzrlib/tests/per_repository/test_commit_builder.py 
test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
      bzrlib/tests/per_repository/test_repository.py 
test_repository.py-20060131092128-ad07f494f5c9d26c
      bzrlib/tests/per_repository/test_revision.py 
testrevprops.py-20051013073044-92bc3c68302ce1bf
      bzrlib/tests/per_repository/test_write_group.py 
test_write_group.py-20070716105516-89n34xtogq5frn0m-1
      bzrlib/tests/test_btree_index.py 
test_index.py-20080624222253-p0x5f92uyh5hw734-13
      bzrlib/tests/test_fetch.py     
testfetch.py-20050825090644-f73e07e7dfb1765a
      bzrlib/tests/test_knit.py      
test_knit.py-20051212171302-95d4c00dd5f11f2b
      bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
      bzrlib/tests/test_pack_repository.py 
test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
      bzrlib/tests/test_permissions.py 
test_permissions.py-20051215004520-ccf475789c80e80c
      bzrlib/tests/test_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
      bzrlib/tests/test_remote.py    
test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
      bzrlib/tests/test_repository.py 
test_repository.py-20060131075918-65c555b881612f4d
      bzrlib/tests/test_revision.py  
testrevision.py-20050804210559-46f5e1eb67b01289
      bzrlib/tests/test_sftp_transport.py 
testsftp.py-20051027032739-247570325fec7e7e
      bzrlib/tests/test_shelf_ui.py  
test_shelf_ui.py-20081027155203-wtcuazg85wp9u4fv-1
      bzrlib/tests/workingtree_implementations/test_parents.py 
test_set_parents.py-20060807231740-yicmnlci1mj8smu1-1
      bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
      bzrlib/versionedfile.py        
versionedfile.py-20060222045106-5039c71ee3b65490
      bzrlib/workingtree.py          
workingtree.py-20050511021032-29b6ec0a681e02e3
      bzrlib/workingtree_4.py        
workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3831.2.1
    revision-id: [EMAIL PROTECTED]
    parent: [EMAIL PROTECTED]
    committer: Andrew Bennetts <[EMAIL PROTECTED]>
    branch nick: faster-differing-serialiser
    timestamp: Wed 2008-11-12 17:02:40 +1000
    message:
      Quick hack to do batching in InterDifferingSerializer.  Almost halves the 
HPSS round-trips fetching pack-0.92-subtree to 1.9-rich-root.
    modified:
      bzrlib/repository.py           
rev_storage.py-20051111201905-119e9401e46257e3
=== modified file 'NEWS'
--- a/NEWS      2008-11-28 01:43:35 +0000
+++ b/NEWS      2008-11-28 02:35:59 +0000
@@ -24,6 +24,11 @@
       history just to set the last revision info.
       (Andrew Bennetts, John Arbash Meinel)
 
+    * Fetches between formats with different serializers (such as
+      pack-0.92-subtree and 1.9-rich-root) are faster now.  This is due to
+      operating on batches of 100 revisions at time rather than
+      one-by-one.  (Andrew Bennetts, John Arbash Meinel)
+
     * Search index files corresponding to pack files we've already used
       before searching others, because they are more likely to have the
       keys we're looking for.  This reduces the number of iix and tix

=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py      2008-11-28 01:42:05 +0000
+++ b/bzrlib/repository.py      2008-11-28 02:33:04 +0000
@@ -38,6 +38,7 @@
     symbol_versioning,
     tsort,
     ui,
+    versionedfile,
     )
 from bzrlib.bundle import serializer
 from bzrlib.revisiontree import RevisionTree
@@ -3090,15 +3091,19 @@
         revision_ids = tsort.topo_sort(
             self.source.get_graph().get_parent_map(revision_ids))
         def revisions_iterator():
-            for current_revision_id in revision_ids:
-                revision = self.source.get_revision(current_revision_id)
-                tree = self.source.revision_tree(current_revision_id)
-                try:
-                    signature = self.source.get_signature_text(
-                        current_revision_id)
-                except errors.NoSuchRevision:
-                    signature = None
-                yield revision, tree, signature
+            rev_ids = list(revision_ids)
+            for offset in xrange(0, len(rev_ids), 100):
+                current_revids = rev_ids[offset:offset+100]
+                revisions = self.source.get_revisions(current_revids)
+                trees = self.source.revision_trees(current_revids)
+                keys = [(r,) for r in current_revids]
+                sig_stream = self.source.signatures.get_record_stream(
+                    keys, 'unordered', True)
+                sigs = {}
+                for record in versionedfile.filter_absent(sig_stream):
+                    sigs[record.key[0]] = record.get_bytes_as('fulltext')
+                for rev, tree in zip(revisions, trees):
+                    yield rev, tree, sigs.get(rev.revision_id, None)
         if pb is None:
             my_pb = ui.ui_factory.nested_progress_bar()
             pb = my_pb


-- 
bazaar-commits mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/bazaar-commits

Reply via email to