Rev 3175: Merge next_with_ghosts support. in http://people.ubuntu.com/~robertc/baz2.0/more-find-ghosts

Robert Collins robertc at robertcollins.net
Mon Jan 14 00:06:25 GMT 2008


At http://people.ubuntu.com/~robertc/baz2.0/more-find-ghosts

------------------------------------------------------------
revno: 3175
revision-id:robertc at robertcollins.net-20080114000613-3zal7v1to7k9xp5b
parent: robertc at robertcollins.net-20080111043302-0pi5csqyr1ugry00
parent: robertc at robertcollins.net-20080113235717-9a1w22q93j81nd0o
committer: Robert Collins <robertc at robertcollins.net>
branch nick: more-find-ghosts
timestamp: Mon 2008-01-14 11:06:13 +1100
message:
  Merge next_with_ghosts support.
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/debug.py                debug.py-20061102062349-vdhrw9qdpck8cl35-1
  bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
  bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
  bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
  bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
  bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
  bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
  bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
  bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
  bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
  bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
  bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
  bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
  bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
    ------------------------------------------------------------
    revno: 3172.1.6
    revision-id:robertc at robertcollins.net-20080113235717-9a1w22q93j81nd0o
    parent: pqm at pqm.ubuntu.com-20080111214408-cpkslxu95eg5c45u
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: breadth-first-ghosts
    timestamp: Mon 2008-01-14 10:57:17 +1100
    message:
       * New method ``next_with_ghosts`` on the Graph breadth-first-search objects
         which will split out ghosts and present parents into two separate sets,
         useful for code which needs to be aware of ghosts (e.g. fetching data
         cares about ghosts during revision selection). (Robert Collins)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
      bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
    ------------------------------------------------------------
    revno: 3172.1.5
    revision-id:pqm at pqm.ubuntu.com-20080111214408-cpkslxu95eg5c45u
    parent: pqm at pqm.ubuntu.com-20080111083251-et161scbblpkphri
    parent: abentley at panoramicfeedback.com-20080111175920-dn202iylc1kfdfif
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Fri 2008-01-11 21:44:08 +0000
    message:
      Reconfigure can safely be interrupted while fetching (abentley,
      	#179316)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
      bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
        ------------------------------------------------------------
        revno: 2796.2.30
        revision-id:abentley at panoramicfeedback.com-20080111175920-dn202iylc1kfdfif
        parent: abentley at panoramicfeedback.com-20080111174159-ruc9j1mkhqj9m94l
        committer: Aaron Bentley <abentley at panoramicfeedback.com>
        branch nick: bzr.reconfigure
        timestamp: Fri 2008-01-11 12:59:20 -0500
        message:
          Reconfigure can safely be interrupted while fetching (#179316)
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
          bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
        ------------------------------------------------------------
        revno: 2796.2.29
        revision-id:abentley at panoramicfeedback.com-20080111174159-ruc9j1mkhqj9m94l
        parent: abentley at panoramicfeedback.com-20071214153828-wc2w1i8ey025bb8x
        parent: pqm at pqm.ubuntu.com-20080111083251-et161scbblpkphri
        committer: Aaron Bentley <abentley at panoramicfeedback.com>
        branch nick: bzr.reconfigure
        timestamp: Fri 2008-01-11 12:41:59 -0500
        message:
          Merge from bzr.dev
        added:
          bzrlib/help_topics/            help_topics-20071211013603-qz0sojhgxhiujm6a-1
          bzrlib/help_topics/en/         bzrlibhelp-20071209214431-xzg3moksichjwyts-1
          bzrlib/tests/repository_implementations/test_has_revisions.py test_has_revisions.p-20080111035443-xaupgdsx5fw1q54b-1
          bzrlib/tests/test_http_implementations.py test_http_implementa-20071218210003-65nh81gglcfvurw6-1
          bzrlib/version_info_formats/format_custom.py format_custom.py-20071029100350-ajovqhbpb5khf6gu-1
          contrib/bzr_access             bzr_access-20071210163004-c9lb1renhra2ncg0-1
          doc/developers/inventory.txt   inventory.txt-20080103013957-opkrhxy6lmywmx4i-1
          doc/developers/lca-merge.txt   lcamerge.txt-20080103061803-9isydn4ivgwrvorw-1
          doc/en/tutorials/using_bazaar_with_launchpad.txt using_bazaar_with_lp-20071211073140-7msh8uf9a9h4y9hb-1
          doc/en/user-reference/readme.txt readme.txt-20071211133352-guencaey6fpesv4j-1
        renamed:
          bzrlib/help_topics.py => bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/tests/HTTPTestUtil.py => bzrlib/tests/http_utils.py HTTPTestUtil.py-20050914180604-247d3aafb7a43343
          bzrlib/tests/HttpServer.py => bzrlib/tests/http_server.py httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
          doc/en/user-guide/authentication_conf.txt => bzrlib/help_topics/en/authentication.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
          doc/en/user-guide/configuration.txt => bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
          doc/en/user-guide/conflicts.txt => bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
          doc/en/user-reference/hooks.txt => bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
        modified:
          .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
          Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          README                         README-20050309040720-8f368abf9f346b9d
          bzrlib/_patiencediff_c.c       _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/bugtracker.py           bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/cmd_version_info.py     __init__.py-20051228204928-697d01fdca29c99b
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/conflicts.py            conflicts.py-20051001061850-78ef952ba63d2b42
          bzrlib/debug.py                debug.py-20061102062349-vdhrw9qdpck8cl35-1
          bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/lockable_files.py       control_files.py-20051111201905-bb88546e799d669f
          bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
          bzrlib/option.py               option.py-20051014052914-661fb36e76e7362f
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/progress.py             progress.py-20050610070202-df9faaab791964c0
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-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/revision.py             revision.py-20050309040759-e77802c08f3999d5
          bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
          bzrlib/smart/medium.py         medium.py-20061103051856-rgu2huy59fkz902q-1
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
          bzrlib/smart/vfs.py            vfs.py-20061108095550-gunadhxmzkdjfeek-2
          bzrlib/symbol_versioning.py    symbol_versioning.py-20060105104851-9ecf8af605d15a80
          bzrlib/tests/TestUtil.py       TestUtil.py-20050824080200-5f70140a2d938694
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_annotate.py testannotate.py-20051013044000-457f44801bfa9d39
          bzrlib/tests/blackbox/test_checkout.py test_checkout.py-20060211231752-a5cde67cf70af854
          bzrlib/tests/blackbox/test_diff.py test_diff.py-20060110203741-aa99ac93e633d971
          bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
          bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
          bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
          bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
          bzrlib/tests/blackbox/test_non_ascii.py test_non_ascii.py-20060105214030-68010be784a5d854
          bzrlib/tests/blackbox/test_outside_wt.py test_outside_wt.py-20060116200058-98edd33e7db8bdde
          bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
          bzrlib/tests/blackbox/test_send.py test_bundle.py-20060616222707-c21c8b7ea5ef57b1
          bzrlib/tests/blackbox/test_split.py test_split.py-20061008023421-qy0vdpzysh5rriu8-1
          bzrlib/tests/blackbox/test_too_much.py blackbox.py-20050620052131-a7370d756399f615
          bzrlib/tests/blackbox/test_upgrade.py test_upgrade.py-20060120060132-b41e5ed2f886ad28
          bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
          bzrlib/tests/branch_implementations/test_http.py test_http.py-20060731224648-2eef7ae5yja95rya-1
          bzrlib/tests/branch_implementations/test_parent.py test_parent.py-20050830052751-5e62766623c32222
          bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
          bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
          bzrlib/tests/inventory_implementations/__init__.py __init__.py-20070821044532-olbadbokgv3qv1yd-1
          bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/test_ancestry.py  test_ancestry.py-20050913023709-69768e94848312c6
          bzrlib/tests/test_bundle.py    test.py-20050630184834-092aa401ab9f039c
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_commit.py    test_commit.py-20050914060732-279f057f8c295434
          bzrlib/tests/test_conflicts.py test_conflicts.py-20051006031059-e2dad9bbeaa5891f
          bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
          bzrlib/tests/test_extract.py   test_extract.py-20061002214140-qdnnm67q1ov6x6pd-1
          bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
          bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
          bzrlib/tests/test_help.py      test_help.py-20070419045354-6q6rq15j9e2n5fna-1
          bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
          bzrlib/tests/test_http_response.py test_http_response.py-20060628233143-950b2a482a32505d
          bzrlib/tests/test_lockable_files.py test_lockable_files.py-20051225183927-365c7fd99591caf1
          bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
          bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
          bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
          bzrlib/tests/test_progress.py  test_progress.py-20060308160359-978c397bc79b7fda
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_revert.py    test_revert.py-20060828180832-fqb1v6ecpyvnlitj-1
          bzrlib/tests/test_revision.py  testrevision.py-20050804210559-46f5e1eb67b01289
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
          bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
          bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
          bzrlib/tests/test_urlutils.py  test_urlutils.py-20060502192900-46b1f9579987cf9c
          bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
          bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
          bzrlib/tests/test_win32utils.py test_win32utils.py-20070713181630-8xsrjymd3e8mgw23-108
          bzrlib/tests/test_workingtree.py testworkingtree.py-20051004024258-b88d0fe8f101d468
          bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
          bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
          bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
          bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
          bzrlib/transport/http/_urllib.py _urlgrabber.py-20060113083826-0bbf7d992fbf090c
          bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
          bzrlib/transport/http/response.py _response.py-20060613154423-a2ci7hd4iw5c7fnt-1
          bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/urlutils.py             urlutils.py-20060502195429-e8a161ecf8fac004
          bzrlib/version_info_formats/__init__.py generate_version_info.py-20051228204928-8358edabcddcd97e
          bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
          doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
          doc/developers/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
          doc/en/user-guide/browsing_history.txt browsing_history.txt-20071121073725-0corxykv5irjal00-2
          doc/en/user-guide/bug_trackers.txt bug_trackers.txt-20070713223459-khxdlcudraii95uv-1
          doc/en/user-guide/configuring_bazaar.txt configuring_bazaar.t-20071128000722-ncxiua259xwbdbg7-1
          doc/en/user-guide/hooks.txt    hooks.txt-20070829200551-7nr6e5a1io6x78uf-1
          doc/en/user-guide/index.txt    index.txt-20060622101119-tgwtdci8z769bjb9-2
          doc/en/user-guide/introducing_bazaar.txt introducing_bazaar.t-20071114035000-q36a9h57ps06uvnl-5
          doc/en/user-guide/sending_changes.txt sending_changes.txt-20071123154453-dk2mjhrg1vpjm5w2-4
          doc/en/user-guide/setting_up_email.txt setting_up_email.txt-20060314161707-fd242c8944346173
          doc/en/user-guide/version_info.txt version_info.txt-20060921215543-gju6o5xdic8w25np-1
          doc/index.txt                  index.txt-20070813101924-07gd9i9d2jt124bf-1
          setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
          tools/doc_generate/autodoc_rstx.py autodoc_rstx.py-20060420024836-3e0d4a526452193c
          tools/rst2html.py              rst2html.py-20060817120932-gn177u8v0008txhu-1
          bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/tests/http_utils.py     HTTPTestUtil.py-20050914180604-247d3aafb7a43343
          bzrlib/tests/http_server.py    httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
          bzrlib/help_topics/en/authentication.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
          bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
          bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
          bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
    ------------------------------------------------------------
    revno: 3172.1.4
    revision-id:pqm at pqm.ubuntu.com-20080111083251-et161scbblpkphri
    parent: pqm at pqm.ubuntu.com-20080111070636-jhozu5eo7wvh1k0o
    parent: robertc at robertcollins.net-20080111054654-vn3mvu7ylqb6gfw3
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Fri 2008-01-11 08:32:51 +0000
    message:
      (robertc) Add Repository.has_revisions as part of improving pull.
      	(Robert Collins)
    added:
      bzrlib/tests/repository_implementations/test_has_revisions.py test_has_revisions.p-20080111035443-xaupgdsx5fw1q54b-1
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
      bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-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/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
      bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
        ------------------------------------------------------------
        revno: 3173.1.2
        revision-id:robertc at robertcollins.net-20080111054654-vn3mvu7ylqb6gfw3
        parent: robertc at robertcollins.net-20080111052846-oxt52a13l5mu73wj
        committer: Robert Collins <robertc at robertcollins.net>
        branch nick: integration
        timestamp: Fri 2008-01-11 16:46:54 +1100
        message:
          Missed one occurence of None -> NULL_REVISION.
        modified:
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
        ------------------------------------------------------------
        revno: 3173.1.1
        revision-id:robertc at robertcollins.net-20080111052846-oxt52a13l5mu73wj
        parent: robertc at robertcollins.net-20080111035451-52at4031ohbmtoh2
        parent: pqm at pqm.ubuntu.com-20080111050820-eendmy6xgfc6w0yc
        committer: Robert Collins <robertc at robertcollins.net>
        branch nick: integration
        timestamp: Fri 2008-01-11 16:28:46 +1100
        message:
          Resolve conflicts.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
          bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
    ------------------------------------------------------------
    revno: 3172.1.3
    revision-id:pqm at pqm.ubuntu.com-20080111070636-jhozu5eo7wvh1k0o
    parent: pqm at pqm.ubuntu.com-20080111050820-eendmy6xgfc6w0yc
    parent: andrew.bennetts at canonical.com-20080111045553-g8rfanwmvy2bchtp
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Fri 2008-01-11 07:06:36 +0000
    message:
      (andrew) Enable use of smart revision streaming between repos with
      	compatible models.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/debug.py                debug.py-20061102062349-vdhrw9qdpck8cl35-1
      bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
      bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
        ------------------------------------------------------------
        revno: 3172.3.1
        revision-id:andrew.bennetts at canonical.com-20080111045553-g8rfanwmvy2bchtp
        parent: pqm at pqm.ubuntu.com-20080110025628-6tl4b9cmdn335suw
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: remote-fetch-formats
        timestamp: Fri 2008-01-11 15:55:53 +1100
        message:
          Enable use of smart revision streaming between repos with compatible models, not just between identical format repos.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/debug.py                debug.py-20061102062349-vdhrw9qdpck8cl35-1
          bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
    ------------------------------------------------------------
    revno: 3172.1.2
    revision-id:pqm at pqm.ubuntu.com-20080111050820-eendmy6xgfc6w0yc
    parent: pqm at pqm.ubuntu.com-20080111025153-mqrn9i5o3hqezw75
    parent: andrew.bennetts at canonical.com-20080111033844-cizzv5e8e7aup5pv
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Fri 2008-01-11 05:08:20 +0000
    message:
      (andrew) Add Smart request that can stream revisions without
      	buffering.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
      bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
      bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
      bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
      bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
      bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
      bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
        ------------------------------------------------------------
        revno: 2535.3.55.1.31
        revision-id:andrew.bennetts at canonical.com-20080111033844-cizzv5e8e7aup5pv
        parent: andrew.bennetts at canonical.com-20080102080932-j6x7n1jfp84dhl1z
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Fri 2008-01-11 14:38:44 +1100
        message:
          Tweak in response to review comments.
        modified:
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          doc/developers/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.30
        revision-id:andrew.bennetts at canonical.com-20080102080932-j6x7n1jfp84dhl1z
        parent: andrew.bennetts at canonical.com-20080102075837-q0jhh6ay67iofbww
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Wed 2008-01-02 19:09:32 +1100
        message:
          Use ContainerSerialiser rather than ContainerWriter in bzrlib/smart/repository.py.
        modified:
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.29
        revision-id:andrew.bennetts at canonical.com-20080102075837-q0jhh6ay67iofbww
        parent: andrew.bennetts at canonical.com-20080102061455-4dw3x13jcnzc4d8c
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Wed 2008-01-02 18:58:37 +1100
        message:
          Add a new smart method, Repository.stream_revisions_chunked, rather than changing the behaviour of an existing method.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
        ------------------------------------------------------------
        revno: 2535.3.55.1.28
        revision-id:andrew.bennetts at canonical.com-20080102061455-4dw3x13jcnzc4d8c
        parent: andrew.bennetts at canonical.com-20080102060803-svnxno2teuvzjzv0
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Wed 2008-01-02 17:14:55 +1100
        message:
          Add NEWS entry.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 2535.3.55.1.27
        revision-id:andrew.bennetts at canonical.com-20080102060803-svnxno2teuvzjzv0
        parent: andrew.bennetts at canonical.com-20080102060740-hb8x48e7ofnrm9qz
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Wed 2008-01-02 17:08:03 +1100
        message:
          Remove some unused imports.
        modified:
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.26
        revision-id:andrew.bennetts at canonical.com-20080102060740-hb8x48e7ofnrm9qz
        parent: andrew.bennetts at canonical.com-20080102030859-jz7xiw3b41ki2ffi
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Wed 2008-01-02 17:07:40 +1100
        message:
          Fix locking problem that was hanging the tests.
        modified:
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.25
        revision-id:andrew.bennetts at canonical.com-20080102030859-jz7xiw3b41ki2ffi
        parent: andrew.bennetts at canonical.com-20071110151005-tno9mb24o0jzcv70
        parent: pqm at pqm.ubuntu.com-20071228175832-9kboqtkemnuzzlab
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Wed 2008-01-02 14:08:59 +1100
        message:
          Merge from bzr.dev.
        removed:
          doc/en/user-reference/index.txt index.txt-20070830033353-ud9e03xsh24053oo-1
        added:
          bzrlib/help_topics/            help_topics-20071211013603-qz0sojhgxhiujm6a-1
          bzrlib/help_topics/en/         bzrlibhelp-20071209214431-xzg3moksichjwyts-1
          bzrlib/lru_cache.py            lru_cache.py-20070119165515-tlw203kuwh0id5gv-1
          bzrlib/switch.py               switch.py-20071116011000-v5lnw7d2wkng9eux-1
          bzrlib/tests/blackbox/test_switch.py test_switch.py-20071122111948-0c5en6uz92bwl76h-1
          bzrlib/tests/repository_implementations/test__generate_text_key_index.py test__generate_text_-20071114232121-00h9fd8qg8kjfa5k-1
          bzrlib/tests/repository_implementations/test_find_text_key_references.py test_find_text_key_r-20071114033605-v73bakal8x77qlfi-1
          bzrlib/tests/test_lru_cache.py test_lru_cache.py-20070119165535-hph6rk4h9rzy4180-1
          bzrlib/tests/test_switch.py    test_switch.py-20071116011000-v5lnw7d2wkng9eux-2
          bzrlib/tests/tree_implementations/test_get_root_id.py test_get_root_id.py-20071026191509-a4conhr43f194avv-1
          bzrlib/version_info_formats/format_custom.py format_custom.py-20071029100350-ajovqhbpb5khf6gu-1
          doc/en/quick-reference/quick-start-summary.pdf quickstartsummary.pd-20071207005239-it6xmdjml8nxvzgt-1
          doc/en/quick-reference/quick-start-summary.png quickstartsummary.pn-20071203142852-hsiybkmh37q5owwe-1
          doc/en/tutorials/              docentutorials-20071127235845-bm2lu60bvau1ptmh-1
          doc/en/user-guide/adv_merging.txt adv_merging.txt-20071213070245-d7u7150lb2hhnvby-1
          doc/en/user-guide/annotating_changes.txt annotating_changes.t-20071122141511-0knao2lklsdsvb1q-1
          doc/en/user-guide/bazaar_workflows.txt bazaar_workflows.txt-20071114035000-q36a9h57ps06uvnl-1
          doc/en/user-guide/best_practice_intro.txt best_practice_intro.-20071123154453-dk2mjhrg1vpjm5w2-1
          doc/en/user-guide/branching_a_project.txt branching_a_project.-20071122141511-0knao2lklsdsvb1q-2
          doc/en/user-guide/browsing_history.txt browsing_history.txt-20071121073725-0corxykv5irjal00-2
          doc/en/user-guide/central_intro.txt central_intro.txt-20071123055134-k5x4ekduci2lbn36-1
          doc/en/user-guide/configuring_bazaar.txt configuring_bazaar.t-20071128000722-ncxiua259xwbdbg7-1
          doc/en/user-guide/controlling_registration.txt controlling_registra-20071121073725-0corxykv5irjal00-3
          doc/en/user-guide/core_concepts.txt core_concepts.txt-20071114035000-q36a9h57ps06uvnl-2
          doc/en/user-guide/distributed_intro.txt distributed_intro.tx-20071123154453-dk2mjhrg1vpjm5w2-2
          doc/en/user-guide/entering_commands.txt using_bazaar.txt-20071114035000-q36a9h57ps06uvnl-6
          doc/en/user-guide/getting_help.txt getting_help.txt-20071128000722-ncxiua259xwbdbg7-2
          doc/en/user-guide/images/      images-20071114035000-q36a9h57ps06uvnl-3
          doc/en/user-guide/images/workflows_centralized.png workflows_centralize-20071114035000-q36a9h57ps06uvnl-8
          doc/en/user-guide/images/workflows_centralized.svg workflows_centralize-20071130043324-bhms0cgyphhq1b2x-1
          doc/en/user-guide/images/workflows_gatekeeper.png workflows_gatekeeper-20071114035000-q36a9h57ps06uvnl-9
          doc/en/user-guide/images/workflows_gatekeeper.svg workflows_gatekeeper-20071130043324-bhms0cgyphhq1b2x-2
          doc/en/user-guide/images/workflows_localcommit.png workflows_localcommi-20071114035000-q36a9h57ps06uvnl-10
          doc/en/user-guide/images/workflows_localcommit.svg workflows_localcommi-20071130043324-bhms0cgyphhq1b2x-3
          doc/en/user-guide/images/workflows_peer.png workflows_peer.png-20071114035000-q36a9h57ps06uvnl-11
          doc/en/user-guide/images/workflows_peer.svg workflows_peer.svg-20071130043324-bhms0cgyphhq1b2x-4
          doc/en/user-guide/images/workflows_pqm.png workflows_pqm.png-20071114035000-q36a9h57ps06uvnl-12
          doc/en/user-guide/images/workflows_pqm.svg workflows_pqm.svg-20071130043324-bhms0cgyphhq1b2x-5
          doc/en/user-guide/images/workflows_shared.png workflows_shared.png-20071114035000-q36a9h57ps06uvnl-13
          doc/en/user-guide/images/workflows_shared.svg workflows_shared.svg-20071130043324-bhms0cgyphhq1b2x-6
          doc/en/user-guide/images/workflows_single.png workflows_single.png-20071114035000-q36a9h57ps06uvnl-14
          doc/en/user-guide/images/workflows_single.svg workflows_single.svg-20071130043324-bhms0cgyphhq1b2x-7
          doc/en/user-guide/installing_bazaar.txt installing_bazaar.tx-20071114035000-q36a9h57ps06uvnl-4
          doc/en/user-guide/introducing_bazaar.txt introducing_bazaar.t-20071114035000-q36a9h57ps06uvnl-5
          doc/en/user-guide/merging_changes.txt merging_changes.txt-20071122141511-0knao2lklsdsvb1q-3
          doc/en/user-guide/organizing_branches.txt organizing_branches.-20071123154453-dk2mjhrg1vpjm5w2-3
          doc/en/user-guide/partner_intro.txt partner_workflow.txt-20071122141511-0knao2lklsdsvb1q-4
          doc/en/user-guide/publishing_a_branch.txt publishing_a_branch.-20071123055134-k5x4ekduci2lbn36-2
          doc/en/user-guide/recording_changes.txt recording_changes.tx-20071121073725-0corxykv5irjal00-4
          doc/en/user-guide/releasing_a_project.txt releasing_a_project.-20071121073725-0corxykv5irjal00-5
          doc/en/user-guide/resolving_conflicts.txt resolving_conflicts.-20071122141511-0knao2lklsdsvb1q-5
          doc/en/user-guide/reusing_a_checkout.txt reusing_a_checkout.t-20071123055134-k5x4ekduci2lbn36-3
          doc/en/user-guide/reviewing_changes.txt reviewing_changes.tx-20071121073725-0corxykv5irjal00-6
          doc/en/user-guide/sending_changes.txt sending_changes.txt-20071123154453-dk2mjhrg1vpjm5w2-4
          doc/en/user-guide/solo_intro.txt solo_workflow.txt-20071121073725-0corxykv5irjal00-7
          doc/en/user-guide/starting_a_project.txt starting_a_project.t-20071121073725-0corxykv5irjal00-8
          doc/en/user-guide/undoing_mistakes.txt undoing_mistakes.txt-20071121092300-8fyacngt1w98e5mp-1
          doc/en/user-guide/using_checkouts.txt using_checkouts.txt-20071123055134-k5x4ekduci2lbn36-4
          doc/en/user-guide/using_gatekeepers.txt using_gatekeepers.tx-20071123154453-dk2mjhrg1vpjm5w2-5
          doc/en/user-guide/working_offline_central.txt working_offline_cent-20071123055134-k5x4ekduci2lbn36-5
          doc/en/user-guide/writing_a_plugin.txt writing_a_plugin.txt-20071114035000-q36a9h57ps06uvnl-7
          doc/en/user-reference/readme.txt readme.txt-20071211133352-guencaey6fpesv4j-1
          index.txt                      index.txt-20071121073725-0corxykv5irjal00-1
        renamed:
          bzrlib/help_topics.py => bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          doc/developers/knitpack.txt => doc/developers/packrepo.txt knitpack.txt-20071023074744-q0g5u8me8gk5zbtb-1
          doc/en/user-guide/authentication_conf.txt => bzrlib/help_topics/en/authentication.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
          doc/en/user-guide/centralized_workflow.txt => doc/en/tutorials/centralized_workflow.txt centralized_workflow-20060830194948-kspf52565xvgrlil-1
          doc/en/user-guide/configuration.txt => bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
          doc/en/user-guide/conflicts.txt => bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
          doc/en/user-guide/tutorial.txt => doc/en/tutorials/tutorial.txt tutorial.txt-20050804190939-9dcbba2ef053bc84
          doc/en/user-reference/hooks.txt => bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
        modified:
          .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
          Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          README                         README-20050309040720-8f368abf9f346b9d
          bzr                            bzr.py-20050313053754-5485f144c7006fa6
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
          bzrlib/_patiencediff_c.c       _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
          bzrlib/annotate.py             annotate.py-20050922133147-7c60541d2614f022
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/bugtracker.py           bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/check.py                check.py-20050309040759-f3a679400c06bcc1
          bzrlib/cmd_version_info.py     __init__.py-20051228204928-697d01fdca29c99b
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
          bzrlib/conflicts.py            conflicts.py-20051001061850-78ef952ba63d2b42
          bzrlib/debug.py                debug.py-20061102062349-vdhrw9qdpck8cl35-1
          bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/lockable_files.py       control_files.py-20051111201905-bb88546e799d669f
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
          bzrlib/mail_client.py          mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
          bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
          bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
          bzrlib/merge_directive.py      merge_directive.py-20070228184838-ja62280spt1g7f4x-1
          bzrlib/msgeditor.py            msgeditor.py-20050901111708-ef6d8de98f5d8f2f
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/plugin.py               plugin.py-20050622060424-829b654519533d69
          bzrlib/plugins/launchpad/__init__.py __init__.py-20060315182712-2d5feebd2a1032dc
          bzrlib/plugins/launchpad/lp_indirect.py lp_indirect.py-20070126012204-de5rugwlt22c7u7e-1
          bzrlib/plugins/launchpad/lp_registration.py lp_registration.py-20060315190948-daa617eafe3a8d48
          bzrlib/plugins/launchpad/test_lp_indirect.py test_lp_indirect.py-20070126002743-oyle362tzv9cd8mi-1
          bzrlib/plugins/launchpad/test_register.py test_register.py-20060315182712-40f5dda945c829a8
          bzrlib/reconcile.py            reweave_inventory.py-20051108164726-1e5e0934febac06e
          bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/revision.py             revision.py-20050309040759-e77802c08f3999d5
          bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
          bzrlib/sign_my_commits.py      sign_my_commits.py-20060215152201-5a6363365180e671
          bzrlib/smart/branch.py         branch.py-20061124031907-mzh3pla28r83r97f-1
          bzrlib/smart/medium.py         medium.py-20061103051856-rgu2huy59fkz902q-1
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/symbol_versioning.py    symbol_versioning.py-20060105104851-9ecf8af605d15a80
          bzrlib/tests/HTTPTestUtil.py   HTTPTestUtil.py-20050914180604-247d3aafb7a43343
          bzrlib/tests/HttpServer.py     httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
          bzrlib/tests/TestUtil.py       TestUtil.py-20050824080200-5f70140a2d938694
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
          bzrlib/tests/blackbox/test_bound_branches.py test_bound_branches.py-20051109215527-2373188ad566c205
          bzrlib/tests/blackbox/test_cat.py test_cat.py-20051201162916-f0937e4e19ea24b3
          bzrlib/tests/blackbox/test_checkout.py test_checkout.py-20060211231752-a5cde67cf70af854
          bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
          bzrlib/tests/blackbox/test_diff.py test_diff.py-20060110203741-aa99ac93e633d971
          bzrlib/tests/blackbox/test_exceptions.py test_exceptions.py-20060604211237-yi2cxg0ose3xk4id-1
          bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
          bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
          bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
          bzrlib/tests/blackbox/test_mv.py test_mv.py-20060705114902-33tkxz0o9cdshemo-1
          bzrlib/tests/blackbox/test_non_ascii.py test_non_ascii.py-20060105214030-68010be784a5d854
          bzrlib/tests/blackbox/test_outside_wt.py test_outside_wt.py-20060116200058-98edd33e7db8bdde
          bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
          bzrlib/tests/blackbox/test_reconcile.py test_fix.py-20060223013051-9a188e15a5ee9451
          bzrlib/tests/blackbox/test_reconfigure.py test_reconfigure.py-20070908173426-khfo5fi2rgzgtwj3-1
          bzrlib/tests/blackbox/test_remove.py test_remove.py-20060530011439-fika5rm84lon0goe-1
          bzrlib/tests/blackbox/test_send.py test_bundle.py-20060616222707-c21c8b7ea5ef57b1
          bzrlib/tests/blackbox/test_split.py test_split.py-20061008023421-qy0vdpzysh5rriu8-1
          bzrlib/tests/blackbox/test_uncommit.py test_uncommit.py-20051027212835-84944b63adae51be
          bzrlib/tests/blackbox/test_upgrade.py test_upgrade.py-20060120060132-b41e5ed2f886ad28
          bzrlib/tests/blackbox/test_versioning.py versioning.py-20050622071821-3ddf5e2e5e93c602
          bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
          bzrlib/tests/branch_implementations/test_break_lock.py test_break_lock.py-20060504111902-9aae411dbe9aadd2
          bzrlib/tests/branch_implementations/test_create_checkout.py test_create_checkout-20070322193723-n2wkp1g03r0404di-1
          bzrlib/tests/branch_implementations/test_get_revision_id_to_revno_map.py test_get_revision_id-20070417211641-6kcoj1c704gqqopn-1
          bzrlib/tests/branch_implementations/test_locking.py test_locking.py-20060707151933-tav3o2hpibwi53u4-4
          bzrlib/tests/branch_implementations/test_pull.py test_pull.py-20060410103942-83c35b26657414fc
          bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
          bzrlib/tests/commands/test_checkout.py test_checkout.py-20070525151718-vm7ligd5px5dtmda-1
          bzrlib/tests/ftp_server.py     ftpserver.py-20071019102346-61jbvdkrr70igauv-1
          bzrlib/tests/interrepository_implementations/__init__.py __init__.py-20060220054744-baf49a1f88f17b1a
          bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
          bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
          bzrlib/tests/repository_implementations/test_check.py test_check.py-20070824124512-38g4d135gcqxo4zb-1
          bzrlib/tests/repository_implementations/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
          bzrlib/tests/repository_implementations/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
          bzrlib/tests/repository_implementations/test_fileid_involved.py test_file_involved.py-20051215205901-728a172d1014daaa
          bzrlib/tests/repository_implementations/test_reconcile.py test_reconcile.py-20060223022332-572ef70a3288e369
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/test_ancestry.py  test_ancestry.py-20050913023709-69768e94848312c6
          bzrlib/tests/test_annotate.py  test_annotate.py-20061213215015-sttc9agsxomls7q0-1
          bzrlib/tests/test_bugtracker.py test_bugtracker.py-20070410073305-vu1vu1qosjurg8kb-2
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_commit.py    test_commit.py-20050914060732-279f057f8c295434
          bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
          bzrlib/tests/test_conflicts.py test_conflicts.py-20051006031059-e2dad9bbeaa5891f
          bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
          bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
          bzrlib/tests/test_errors.py    test_errors.py-20060210110251-41aba2deddf936a8
          bzrlib/tests/test_extract.py   test_extract.py-20061002214140-qdnnm67q1ov6x6pd-1
          bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
          bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
          bzrlib/tests/test_help.py      test_help.py-20070419045354-6q6rq15j9e2n5fna-1
          bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
          bzrlib/tests/test_http_response.py test_http_response.py-20060628233143-950b2a482a32505d
          bzrlib/tests/test_info.py      test_info.py-20070320150933-m0xxm1g7xi9v6noe-1
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/tests/test_lockable_files.py test_lockable_files.py-20051225183927-365c7fd99591caf1
          bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
          bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
          bzrlib/tests/test_memorytree.py test_memorytree.py-20060906023413-4wlkalbdpsxi2r4y-3
          bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
          bzrlib/tests/test_merge_core.py test_merge_core.py-20050824132511-eb99b23a0eec641b
          bzrlib/tests/test_merge_directive.py test_merge_directive-20070228184838-ja62280spt1g7f4x-2
          bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
          bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
          bzrlib/tests/test_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
          bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_revert.py    test_revert.py-20060828180832-fqb1v6ecpyvnlitj-1
          bzrlib/tests/test_revision.py  testrevision.py-20050804210559-46f5e1eb67b01289
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
          bzrlib/tests/test_ssh_transport.py test_ssh_transport.p-20070105153201-f7iq2bosvgjbdgc3-1
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
          bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
          bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
          bzrlib/tests/test_upgrade.py   test_upgrade.py-20051004040251-555fe1d2bae1bc71
          bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
          bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
          bzrlib/tests/test_workingtree.py testworkingtree.py-20051004024258-b88d0fe8f101d468
          bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
          bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
          bzrlib/tests/workingtree_implementations/test_break_lock.py test_break_lock.py-20060504115740-233e245df546fd42
          bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
          bzrlib/tests/workingtree_implementations/test_remove.py test_remove.py-20070413183901-rvnp85rtc0q0sclp-1
          bzrlib/tests/workingtree_implementations/test_unversion.py test_unversion.py-20060907074408-bygh2y28jz8u0cg7-1
          bzrlib/tests/workingtree_implementations/test_walkdirs.py test_walkdirs.py-20060731045042-ch366w6dve2m7ro9-1
          bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
          bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
          bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
          bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
          bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
          bzrlib/transport/http/_urllib.py _urlgrabber.py-20060113083826-0bbf7d992fbf090c
          bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
          bzrlib/transport/http/response.py _response.py-20060613154423-a2ci7hd4iw5c7fnt-1
          bzrlib/transport/local.py      local_transport.py-20050711165921-9b1f142bfe480c24
          bzrlib/transport/memory.py     memory.py-20051016101338-cd008dbdf69f04fc
          bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
          bzrlib/transport/ssh.py        ssh.py-20060824042150-0s9787kng6zv1nwq-1
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/util/configobj/configobj.py configobj.py-20051018184548-06992a2246425e3e
          bzrlib/util/configobj/docs/BSD-LICENSE.txt BSDLICENSE.txt-20051018184548-29b89ff3102657f5
          bzrlib/util/configobj/docs/configobj.txt configobj.txt-20051018184548-4949b5f17e6a19c7
          bzrlib/util/configobj/docs/validate.txt validate.txt-20051018184548-9e0e5ad913e258f5
          bzrlib/version_info_formats/__init__.py generate_version_info.py-20051228204928-8358edabcddcd97e
          bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
          bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
          bzrlib/win32utils.py           win32console.py-20051021033308-123c6c929d04973d
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
          doc/developers/bundles.txt     bundles.txt-20070621030528-qkjnugd7iyud6ow3-1
          doc/developers/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
          doc/developers/performance-contributing.txt performancecontribut-20070621063612-ac4zhhagjzkr21qp-1
          doc/en/mini-tutorial/index.txt index.txt-20070813141352-2u64ooqzo0or4hss-2
          doc/en/quick-reference/quick-start-summary.svg quickstartsummary.sv-20070813143223-5i7bgw7w8s7l3ae2-3
          doc/en/user-guide/bug_trackers.txt bug_trackers.txt-20070713223459-khxdlcudraii95uv-1
          doc/en/user-guide/hooks.txt    hooks.txt-20070829200551-7nr6e5a1io6x78uf-1
          doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
          doc/en/user-guide/index.txt    index.txt-20060622101119-tgwtdci8z769bjb9-2
          doc/en/user-guide/plugins.txt  plugins.txt-20060314145616-525099a747f3ffdd
          doc/en/user-guide/server.txt   server.txt-20060913044801-h939fvbwzz39gf7g-1
          doc/en/user-guide/setting_up_email.txt setting_up_email.txt-20060314161707-fd242c8944346173
          doc/en/user-guide/shared_repository_layouts.txt shared_repository_la-20070502152030-bagewuqs18ns24o7-1
          doc/en/user-guide/specifying_revisions.txt specifying_revisions.txt-20060314161707-19deb139101bea33
          doc/en/user-guide/using_aliases.txt using_aliases.txt-20060314161707-c21d27fa2939e039
          doc/en/user-guide/version_info.txt version_info.txt-20060921215543-gju6o5xdic8w25np-1
          doc/index.txt                  index.txt-20070813101924-07gd9i9d2jt124bf-1
          setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
          tools/doc_generate/autodoc_rstx.py autodoc_rstx.py-20060420024836-3e0d4a526452193c
          tools/rst2html.py              rst2html.py-20060817120932-gn177u8v0008txhu-1
          tools/win32/bzr.iss.cog        bzr.iss.cog-20060622100836-b3yup582rt3y0nvm-5
          bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          doc/developers/packrepo.txt    knitpack.txt-20071023074744-q0g5u8me8gk5zbtb-1
          bzrlib/help_topics/en/authentication.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
          bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
          bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
          doc/en/tutorials/tutorial.txt  tutorial.txt-20050804190939-9dcbba2ef053bc84
          bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.24
        revision-id:andrew.bennetts at canonical.com-20071110151005-tno9mb24o0jzcv70
        parent: andrew.bennetts at canonical.com-20071110150909-ik5254kgn930th10
        parent: andrew.bennetts at canonical.com-20071109204954-nvvh3mbjk5g9sr6x
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Sat 2007-11-10 10:10:05 -0500
        message:
          Merge from hpss-streaming.
        modified:
          bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
          doc/developers/network-protocol.txt networkprotocol.txt-20070903044232-woustorrjbmg5zol-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.23
        revision-id:andrew.bennetts at canonical.com-20071110150909-ik5254kgn930th10
        parent: andrew.bennetts at canonical.com-20071029084920-fbybous3xzspcu4n
        parent: andrew.bennetts at canonical.com-20071110145614-bxpv031fq77cjg5j
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Sat 2007-11-10 10:09:09 -0500
        message:
          Merge streamable-containers.
        added:
          bzrlib/plugins/launchpad/account.py account.py-20071011033320-50y6vfftywf4yllw-1
          bzrlib/plugins/launchpad/test_account.py test_account.py-20071011033320-50y6vfftywf4yllw-2
          bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
          bzrlib/tests/blackbox/test_check.py test_check.py-20071024054728-mn44rt3z5hnqcbke-1
          bzrlib/tests/ftp_server.py     ftpserver.py-20071019102346-61jbvdkrr70igauv-1
          doc/developers/knitpack.txt    knitpack.txt-20071023074744-q0g5u8me8gk5zbtb-1
          doc/en/user-guide/authentication_conf.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
        modified:
          Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzr                            bzr.py-20050313053754-5485f144c7006fa6
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
          bzrlib/annotate.py             annotate.py-20050922133147-7c60541d2614f022
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bundle/commands.py      __init__.py-20050617152058-1b6530d9ab85c11c
          bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/check.py                check.py-20050309040759-f3a679400c06bcc1
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
          bzrlib/debug.py                debug.py-20061102062349-vdhrw9qdpck8cl35-1
          bzrlib/delta.py                delta.py-20050729221636-54cf14ef94783d0a
          bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/export/__init__.py      __init__.py-20051114235828-1ba62cb4062304e6
          bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
          bzrlib/help_topics.py          help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/info.py                 info.py-20050323235939-6bbfe7d9700b0b9b
          bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/lazy_import.py          lazy_import.py-20060910203832-f77c54gf3n232za0-1
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
          bzrlib/lsprof.py               lsprof.py-20051208071030-833790916798ceed
          bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/pack.py                 container.py-20070607160755-tr8zc26q18rn0jnb-1
          bzrlib/plugins/launchpad/__init__.py __init__.py-20060315182712-2d5feebd2a1032dc
          bzrlib/plugins/launchpad/lp_registration.py lp_registration.py-20060315190948-daa617eafe3a8d48
          bzrlib/plugins/launchpad/test_register.py test_register.py-20060315182712-40f5dda945c829a8
          bzrlib/plugins/multiparent.py  mpregen-20070411063203-5x9z7i73add0d6f6-1
          bzrlib/progress.py             progress.py-20050610070202-df9faaab791964c0
          bzrlib/reconcile.py            reweave_inventory.py-20051108164726-1e5e0934febac06e
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/rio.py                  rio.py-20051128032247-770b120b34dfff60
          bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
          bzrlib/smtp_connection.py      smtp_connection.py-20070618204456-nu6wag1ste4biuk2-1
          bzrlib/status.py               status.py-20050505062338-431bfa63ec9b19e6
          bzrlib/symbol_versioning.py    symbol_versioning.py-20060105104851-9ecf8af605d15a80
          bzrlib/tests/HTTPTestUtil.py   HTTPTestUtil.py-20050914180604-247d3aafb7a43343
          bzrlib/tests/HttpServer.py     httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
          bzrlib/tests/blackbox/test_debug.py test_debug.py-20061026142942-q76cgg41785b3mdk-1
          bzrlib/tests/blackbox/test_exceptions.py test_exceptions.py-20060604211237-yi2cxg0ose3xk4id-1
          bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
          bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
          bzrlib/tests/blackbox/test_merge_directive.py test_merge_directive-20070302012039-zh7uhy39biairtn0-1
          bzrlib/tests/blackbox/test_mv.py test_mv.py-20060705114902-33tkxz0o9cdshemo-1
          bzrlib/tests/blackbox/test_non_ascii.py test_non_ascii.py-20060105214030-68010be784a5d854
          bzrlib/tests/blackbox/test_tags.py test_tags.py-20070116132048-5h4qak2cm22jlb9e-1
          bzrlib/tests/blackbox/test_update.py test_update.py-20060212125639-c4dad1a5c56d5919
          bzrlib/tests/blackbox/test_whoami.py test_whoami.py-20060629025641-8h3m2ch7kutqx7ug-1
          bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
          bzrlib/tests/branch_implementations/test_break_lock.py test_break_lock.py-20060504111902-9aae411dbe9aadd2
          bzrlib/tests/branch_implementations/test_create_checkout.py test_create_checkout-20070322193723-n2wkp1g03r0404di-1
          bzrlib/tests/branch_implementations/test_pull.py test_pull.py-20060410103942-83c35b26657414fc
          bzrlib/tests/branch_implementations/test_push.py test_push.py-20070130153159-fhfap8uoifevg30j-1
          bzrlib/tests/branch_implementations/test_sprout.py test_sprout.py-20070521151739-b8t8p7axw1h966ws-1
          bzrlib/tests/interrepository_implementations/__init__.py __init__.py-20060220054744-baf49a1f88f17b1a
          bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
          bzrlib/tests/intertree_implementations/test_compare.py test_compare.py-20060724101752-09ysswo1a92uqyoz-2
          bzrlib/tests/inventory_implementations/basics.py basics.py-20070903044446-kdjwbiu1p1zi9phs-1
          bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
          bzrlib/tests/repository_implementations/helpers.py helpers.py-20070924032407-m460yl9j5gu5ju85-2
          bzrlib/tests/repository_implementations/test_check.py test_check.py-20070824124512-38g4d135gcqxo4zb-1
          bzrlib/tests/repository_implementations/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
          bzrlib/tests/repository_implementations/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/repository_implementations/test_fileid_involved.py test_file_involved.py-20051215205901-728a172d1014daaa
          bzrlib/tests/repository_implementations/test_reconcile.py test_reconcile.py-20060223022332-572ef70a3288e369
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/repository_implementations/test_write_group.py test_write_group.py-20070716105516-89n34xtogq5frn0m-1
          bzrlib/tests/test_bad_files.py test_bad_files.py-20050918155938-c76a2295c8ab9503
          bzrlib/tests/test_bundle.py    test.py-20050630184834-092aa401ab9f039c
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_commit.py    test_commit.py-20050914060732-279f057f8c295434
          bzrlib/tests/test_commit_merge.py test_commit_merge.py-20050920084723-819eeeff77907bc5
          bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
          bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
          bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
          bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
          bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
          bzrlib/tests/test_hashcache.py testhashcache.py-20050706091800-0288ab2659338981
          bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
          bzrlib/tests/test_info.py      test_info.py-20070320150933-m0xxm1g7xi9v6noe-1
          bzrlib/tests/test_lazy_import.py test_lazy_import.py-20060910203832-f77c54gf3n232za0-2
          bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
          bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
          bzrlib/tests/test_osutils_encodings.py test_osutils_encodin-20061226013130-kkp732tpt3lm91vv-1
          bzrlib/tests/test_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
          bzrlib/tests/test_smtp_connection.py test_smtp_connection-20070618204509-wuyxc0r0ztrecv7e-1
          bzrlib/tests/test_testament.py testtestament.py-20051011100429-5df1657310caa929
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
          bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
          bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
          bzrlib/tests/test_xml.py       test_xml.py-20050905091053-80b45588931a9b35
          bzrlib/tests/tree_implementations/test_get_symlink_target.py test_get_symlink_tar-20070225165554-ickod3w3t7u0zzqh-1
          bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
          bzrlib/tests/tree_implementations/test_test_trees.py test_tree_trees.py-20060720091921-3nwi5h21lf06vf5p-1
          bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
          bzrlib/tests/workingtree_implementations/test_executable.py test_executable.py-20060628162557-tr7h57kl80l3ma8i-1
          bzrlib/tests/workingtree_implementations/test_parents.py test_set_parents.py-20060807231740-yicmnlci1mj8smu1-1
          bzrlib/tests/workingtree_implementations/test_pull.py test_pull.py-20060222044334-43594dd8e143b708
          bzrlib/tests/workingtree_implementations/test_unversion.py test_unversion.py-20060907074408-bygh2y28jz8u0cg7-1
          bzrlib/tests/workingtree_implementations/test_walkdirs.py test_walkdirs.py-20060731045042-ch366w6dve2m7ro9-1
          bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
          bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
          bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
          bzrlib/transport/http/_urllib.py _urlgrabber.py-20060113083826-0bbf7d992fbf090c
          bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
          bzrlib/transport/memory.py     memory.py-20051016101338-cd008dbdf69f04fc
          bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
          bzrlib/transport/ssh.py        ssh.py-20060824042150-0s9787kng6zv1nwq-1
          bzrlib/util/configobj/configobj.py configobj.py-20051018184548-06992a2246425e3e
          bzrlib/version.py              version.py-20060816024207-ves6ult9a11taj9t-1
          bzrlib/weavefile.py            weavefile.py-20050629135233-2ffe0200f103f6c2
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          bzrlib/xml5.py                 xml5.py-20050907032657-aac8f960815b66b1
          doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
          doc/developers/authentication-ring.txt authring.txt-20070718200437-q5tdik0ne6lor86d-1
          doc/developers/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
          doc/developers/repository.txt  repository.txt-20070709152006-xkhlek456eclha4u-1
          doc/en/mini-tutorial/index.txt index.txt-20070813141352-2u64ooqzo0or4hss-2
          doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
          doc/en/user-guide/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
          generate_docs.py               bzrinfogen.py-20051211224525-78e7c14f2c955e55
          setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
          tools/win32/bzr-win32-bdist-postinstall.py bzrwin32bdistpostinstall.py-20060629085133-098bsfj3va8jc0ql-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.22
        revision-id:andrew.bennetts at canonical.com-20071029084920-fbybous3xzspcu4n
        parent: andrew.bennetts at canonical.com-20071022072757-93pzz251z76wvrp4
        parent: andrew.bennetts at canonical.com-20071029083438-ke1vsv97dvgrvup5
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Mon 2007-10-29 19:49:20 +1100
        message:
          Merge from streamable-containers.
        modified:
          bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
          bzrlib/pack.py                 container.py-20070607160755-tr8zc26q18rn0jnb-1
          bzrlib/tests/test_pack.py      test_container.py-20070607160755-tr8zc26q18rn0jnb-2
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
        ------------------------------------------------------------
        revno: 2535.3.55.1.21
        revision-id:andrew.bennetts at canonical.com-20071022072757-93pzz251z76wvrp4
        parent: andrew.bennetts at canonical.com-20071022071957-a2lhya2vptwcmay7
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Mon 2007-10-22 17:27:57 +1000
        message:
          Rename smart request, to avoid confusion with non-chunked version merged into bzr.dev.
        modified:
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
        ------------------------------------------------------------
        revno: 2535.3.55.1.20
        revision-id:andrew.bennetts at canonical.com-20071022071957-a2lhya2vptwcmay7
        parent: andrew.bennetts at canonical.com-20071022052310-binwm9yszizj2zbl
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Mon 2007-10-22 17:19:57 +1000
        message:
          Remove unused import.
        modified:
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.19
        revision-id:andrew.bennetts at canonical.com-20071022052310-binwm9yszizj2zbl
        parent: andrew.bennetts at canonical.com-20071022051608-nfu9qeibxb870vlk
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Mon 2007-10-22 15:23:10 +1000
        message:
          Fix some trivial NameErrors in error handling.
        modified:
          bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.18
        revision-id:andrew.bennetts at canonical.com-20071022051608-nfu9qeibxb870vlk
        parent: andrew.bennetts at canonical.com-20071022050522-iv38fasrs4jvd0tv
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Mon 2007-10-22 15:16:08 +1000
        message:
          Use pack.ContainerSerialiser to remove some nasty cruft.
        modified:
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
        ------------------------------------------------------------
        revno: 2535.3.55.1.17
        revision-id:andrew.bennetts at canonical.com-20071022050522-iv38fasrs4jvd0tv
        parent: andrew.bennetts at canonical.com-20071022045025-s57krf6kiii97bkl
        parent: andrew.bennetts at canonical.com-20071022050512-251thgr0i2ntcq3j
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Mon 2007-10-22 15:05:22 +1000
        message:
          Merge from streamable-containers.
        modified:
          bzrlib/pack.py                 container.py-20070607160755-tr8zc26q18rn0jnb-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.16
        revision-id:andrew.bennetts at canonical.com-20071022045025-s57krf6kiii97bkl
        parent: andrew.bennetts at canonical.com-20071021042202-23woqhipr17i649v
        parent: andrew.bennetts at canonical.com-20071022045017-rxuvzs4slk4pbprs
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Mon 2007-10-22 14:50:25 +1000
        message:
          Merge from streamable-containers.
        modified:
          bzrlib/pack.py                 container.py-20070607160755-tr8zc26q18rn0jnb-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.15
        revision-id:andrew.bennetts at canonical.com-20071021042202-23woqhipr17i649v
        parent: andrew.bennetts at canonical.com-20071021041918-gyj12mcwe98a5sfw
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Sun 2007-10-21 14:22:02 +1000
        message:
          Remove 'PackSource' hack by using the ContainerPushParser.
        modified:
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.14
        revision-id:andrew.bennetts at canonical.com-20071021041918-gyj12mcwe98a5sfw
        parent: andrew.bennetts at canonical.com-20071019070140-82rzucin3qiq4h97
        parent: andrew.bennetts at canonical.com-20071019084206-5q81fn1u5rsbnwln
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Sun 2007-10-21 14:19:18 +1000
        message:
          Merge from streamable-container
        modified:
          bzrlib/pack.py                 container.py-20070607160755-tr8zc26q18rn0jnb-1
          bzrlib/tests/test_pack.py      test_container.py-20070607160755-tr8zc26q18rn0jnb-2
        ------------------------------------------------------------
        revno: 2535.3.55.1.13
        revision-id:andrew.bennetts at canonical.com-20071019070140-82rzucin3qiq4h97
        parent: andrew.bennetts at canonical.com-20071019070044-vj4140b3bkal7tfg
        parent: andrew.bennetts at canonical.com-20071019053836-wmzae8grd6tni9g0
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Fri 2007-10-19 17:01:40 +1000
        message:
          Merge from hpss-streaming.
        ------------------------------------------------------------
        revno: 2535.3.55.1.12
        revision-id:andrew.bennetts at canonical.com-20071019070044-vj4140b3bkal7tfg
        parent: andrew.bennetts at canonical.com-20071005060220-np6y79xm6bjk8dq3
        parent: pqm at pqm.ubuntu.com-20071018040514-3hc1k2nj1umg3tig
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Fri 2007-10-19 17:00:44 +1000
        message:
          Merge bzr.dev.
        removed:
          bzrlib/transport/http/_pycurl_errors.py _pycurl_errors.py-20060714003436-4zste49ltg697ft9-1
        added:
          bzrlib/bisect_multi.py         bisect_multi.py-20071005104357-0vymd381la7ew4o1-1
          bzrlib/tests/repository_implementations/helpers.py helpers.py-20070924032407-m460yl9j5gu5ju85-2
          bzrlib/tests/repository_implementations/test_check.py test_check.py-20070824124512-38g4d135gcqxo4zb-1
          bzrlib/tests/repository_implementations/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
          bzrlib/tests/repository_implementations/test_is_write_locked.py test_is_write_locked-20071012063748-vk062lmu683qgbc3-1
          bzrlib/tests/test_bisect_multi.py test_bisect_multi.py-20071005104357-0vymd381la7ew4o1-2
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
          bzrlib/_dirstate_helpers_py.py _dirstate_helpers_py-20070710145033-90nz6cqglsk150jy-1
          bzrlib/_knit_load_data_c.pyx   knit_c.pyx-20070509143944-u42gy8w387a10m0j-1
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bundle/bundle_data.py   read_changeset.py-20050619171944-c0d95aa685537640
          bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
          bzrlib/check.py                check.py-20050309040759-f3a679400c06bcc1
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/help_topics.py          help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/lock.py                 lock.py-20050527050856-ec090bb51bc03349
          bzrlib/lockdir.py              lockdir.py-20060220222025-98258adf27fbdda3
          bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/reconcile.py            reweave_inventory.py-20051108164726-1e5e0934febac06e
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
          bzrlib/smart/branch.py         branch.py-20061124031907-mzh3pla28r83r97f-1
          bzrlib/smart/medium.py         medium.py-20061103051856-rgu2huy59fkz902q-1
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/store/__init__.py       store.py-20050309040759-164dc5173d6406c2
          bzrlib/store/revision/__init__.py __init__.py-20060303014707-305238f06ae20dae
          bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
          bzrlib/store/revision/text.py  text.py-20060303020652-e49155f0da4d14ab
          bzrlib/store/versioned/__init__.py weavestore.py-20050907094258-88262e0434babab9
          bzrlib/symbol_versioning.py    symbol_versioning.py-20060105104851-9ecf8af605d15a80
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
          bzrlib/tests/per_lock/test_lock.py test_lock.py-20070313190612-mfpoa7t8kvrgrhj2-1
          bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
          bzrlib/tests/repository_implementations/test_break_lock.py test_break_lock.py-20060504111704-ee09a107f9f42e43
          bzrlib/tests/repository_implementations/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/repository_implementations/test_iter_reverse_revision_history.py test_iter_reverse_re-20070217015036-spu7j5ggch7pbpyd-1
          bzrlib/tests/repository_implementations/test_reconcile.py test_reconcile.py-20060223022332-572ef70a3288e369
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
          bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
          bzrlib/tests/test_errors.py    test_errors.py-20060210110251-41aba2deddf936a8
          bzrlib/tests/test_escaped_store.py test_escaped_store.py-20060216023929-6bcb9a067344959f
          bzrlib/tests/test_generate_ids.py test_generate_ids.py-20061102205935-z3do15ipw6m7v26u-2
          bzrlib/tests/test_index.py     test_index.py-20070712131115-lolkarso50vjr64s-2
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/tests/test_lockdir.py   test_lockdir.py-20060220222025-33d4221569a3d600
          bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
          bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
          bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
          bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
          bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
          bzrlib/tests/test_xml.py       test_xml.py-20050905091053-80b45588931a9b35
          bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
          bzrlib/tests/workingtree_implementations/test_parents.py test_set_parents.py-20060807231740-yicmnlci1mj8smu1-1
          bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
          bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
          bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
          bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/util/configobj/configobj.py configobj.py-20051018184548-06992a2246425e3e
          bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          bzrlib/xml4.py                 xml4.py-20050916091259-db5ab55e7e6ca324
          bzrlib/xml5.py                 xml5.py-20050907032657-aac8f960815b66b1
          bzrlib/xml6.py                 xml6.py-20060823042456-dbaaq4atrche7xy5-1
          bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
          doc/en/mini-tutorial/index.txt index.txt-20070813141352-2u64ooqzo0or4hss-2
          doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
          doc/index.txt                  index.txt-20070813101924-07gd9i9d2jt124bf-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.11
        revision-id:andrew.bennetts at canonical.com-20071005060220-np6y79xm6bjk8dq3
        parent: andrew.bennetts at canonical.com-20071005044536-3l1saf4wctdcu8jr
        parent: andrew.bennetts at canonical.com-20071005055245-5f8ldcqxp21zy8v8
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Fri 2007-10-05 16:02:20 +1000
        message:
          Merge from repo-refactor.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/debug.py                debug.py-20061102062349-vdhrw9qdpck8cl35-1
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
        ------------------------------------------------------------
        revno: 2535.3.55.1.10
        revision-id:andrew.bennetts at canonical.com-20071005044536-3l1saf4wctdcu8jr
        parent: andrew.bennetts at canonical.com-20071005034425-a8wowrbgcar60lc4
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Fri 2007-10-05 14:45:36 +1000
        message:
          Fix one failing test, disable another.
        modified:
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
        ------------------------------------------------------------
        revno: 2535.3.55.1.9
        revision-id:andrew.bennetts at canonical.com-20071005034425-a8wowrbgcar60lc4
        parent: andrew.bennetts at canonical.com-20070903172226-trr3kr82ekw7orlm
        parent: pqm at pqm.ubuntu.com-20071004215001-549ul8av89cwpnjp
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Fri 2007-10-05 13:44:25 +1000
        message:
          Merge from bzr.dev
        added:
          bzrlib/_patiencediff_c.c       _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
          bzrlib/benchmarks/bench_pack.py bench_pack.py-20070903042947-0wphp878xr6wkw7t-1
          bzrlib/patiencediff.py         patiencediff.py-20070721205536-jz8gaykeb7xtampk-1
          bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
          bzrlib/tests/blackbox/test_reconfigure.py test_reconfigure.py-20070908173426-khfo5fi2rgzgtwj3-1
          bzrlib/tests/blackbox/test_unknowns.py test_unknowns.py-20070905015344-74tg6s1synijo2oe-1
          bzrlib/tests/commands/test_commit.py test_commit.py-20070913161801-ydrx2k5gmv7k7eiu-1
          bzrlib/tests/commands/test_update.py test_update.py-20070910091045-8uyp8v73j926l1g2-1
          bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
          bzrlib/tests/tree_implementations/test_path_content_summary.py test_path_content_su-20070904100855-3vrwedz6akn34kl5-1
          bzrlib/transport/trace.py      trace.py-20070828055009-7kt0bbc4t4b92apz-1
          doc/developers/authentication-ring.txt authring.txt-20070718200437-q5tdik0ne6lor86d-1
        renamed:
          bzrlib/patiencediff.py => bzrlib/_patiencediff_py.py cdvdifflib.py-20051106064558-f8f8097fbf0db4e4
        modified:
          .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
          Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzr                            bzr.py-20050313053754-5485f144c7006fa6
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
          bzrlib/annotate.py             annotate.py-20050922133147-7c60541d2614f022
          bzrlib/benchmarks/__init__.py  __init__.py-20060516064526-eb0d37c78e86065d
          bzrlib/benchmarks/tree_creator/kernel_like.py kernel_like.py-20060815024128-b16a7pn542u6b13k-1
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
          bzrlib/help_topics.py          help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/info.py                 info.py-20050323235939-6bbfe7d9700b0b9b
          bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/lsprof.py               lsprof.py-20051208071030-833790916798ceed
          bzrlib/mail_client.py          mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
          bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
          bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
          bzrlib/msgeditor.py            msgeditor.py-20050901111708-ef6d8de98f5d8f2f
          bzrlib/multiparent.py          __init__.py-20070410133617-n1jdhcc1n1mibarp-1
          bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/pack.py                 container.py-20070607160755-tr8zc26q18rn0jnb-1
          bzrlib/reconcile.py            reweave_inventory.py-20051108164726-1e5e0934febac06e
          bzrlib/registry.py             lazy_factory.py-20060809213415-2gfvqadtvdn0phtg-1
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
          bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
          bzrlib/symbol_versioning.py    symbol_versioning.py-20060105104851-9ecf8af605d15a80
          bzrlib/tag.py                  tag.py-20070212110532-91cw79inah2cfozx-1
          bzrlib/tests/HttpServer.py     httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
          bzrlib/tests/blackbox/test_cat.py test_cat.py-20051201162916-f0937e4e19ea24b3
          bzrlib/tests/blackbox/test_command_encoding.py test_command_encoding.py-20060106032110-45431fd2ce9ff21f
          bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
          bzrlib/tests/blackbox/test_conflicts.py test_conflicts.py-20060228151432-9723ebb925b999cf
          bzrlib/tests/blackbox/test_exceptions.py test_exceptions.py-20060604211237-yi2cxg0ose3xk4id-1
          bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
          bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
          bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
          bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
          bzrlib/tests/blackbox/test_missing.py test_missing.py-20051211212735-a2cf4c1840bb84c4
          bzrlib/tests/blackbox/test_non_ascii.py test_non_ascii.py-20060105214030-68010be784a5d854
          bzrlib/tests/blackbox/test_reconcile.py test_fix.py-20060223013051-9a188e15a5ee9451
          bzrlib/tests/blackbox/test_remove.py test_remove.py-20060530011439-fika5rm84lon0goe-1
          bzrlib/tests/blackbox/test_revert.py test_revert.py-20060124160917-485ce9de629c182c
          bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
          bzrlib/tests/blackbox/test_status.py teststatus.py-20050712014354-508855eb9f29f7dc
          bzrlib/tests/blackbox/test_too_much.py blackbox.py-20050620052131-a7370d756399f615
          bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
          bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
          bzrlib/tests/branch_implementations/test_sprout.py test_sprout.py-20070521151739-b8t8p7axw1h966ws-1
          bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
          bzrlib/tests/commands/__init__.py __init__.py-20070520095518-ecfl8531fxgjeycj-1
          bzrlib/tests/commands/test_branch.py test_branch.py-20070520173042-ou3a796w3xn1y8ps-1
          bzrlib/tests/commands/test_cat.py test_cat.py-20070525170351-vg2apsfb5j413913-1
          bzrlib/tests/commands/test_checkout.py test_checkout.py-20070525151718-vm7ligd5px5dtmda-1
          bzrlib/tests/commands/test_init.py test_init.py-20070514074921-audbcdd8o56dpame-1
          bzrlib/tests/commands/test_init_repository.py test_init_repository-20070525163812-87xw0678ky573l27-1
          bzrlib/tests/commands/test_merge.py test_merge.py-20070525163813-v8yfs5wu77hjsx0o-1
          bzrlib/tests/commands/test_missing.py test_missing.py-20070525171057-qr1z4sleurlp9b5v-1
          bzrlib/tests/commands/test_pull.py test_pull.py-20070525144918-cgmunk4ici2krjnd-1
          bzrlib/tests/commands/test_push.py test_push.py-20070525122003-gc1ob0ea0nueoqgj-1
          bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
          bzrlib/tests/intertree_implementations/test_compare.py test_compare.py-20060724101752-09ysswo1a92uqyoz-2
          bzrlib/tests/interversionedfile_implementations/test_join.py test_join.py-20060302012326-9b5e9b0f0a03fedc
          bzrlib/tests/inventory_implementations/basics.py basics.py-20070903044446-kdjwbiu1p1zi9phs-1
          bzrlib/tests/repository_implementations/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
          bzrlib/tests/test_bundle.py    test.py-20050630184834-092aa401ab9f039c
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_commit.py    test_commit.py-20050914060732-279f057f8c295434
          bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
          bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
          bzrlib/tests/test_errors.py    test_errors.py-20060210110251-41aba2deddf936a8
          bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
          bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
          bzrlib/tests/test_info.py      test_info.py-20070320150933-m0xxm1g7xi9v6noe-1
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/tests/test_lsprof.py    test_lsprof.py-20070606095601-bctdndm8yhc0cqnc-1
          bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
          bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
          bzrlib/tests/test_merge_core.py test_merge_core.py-20050824132511-eb99b23a0eec641b
          bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
          bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
          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_revert.py    test_revert.py-20060828180832-fqb1v6ecpyvnlitj-1
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
          bzrlib/tests/test_symbol_versioning.py test_symbol_versioning.py-20060105104851-51d7722c2018d42b
          bzrlib/tests/test_tag.py       test_tag.py-20070212110532-91cw79inah2cfozx-2
          bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
          bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
          bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
          bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
          bzrlib/tests/test_weave.py     testknit.py-20050627023648-9833cc5562ffb785
          bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
          bzrlib/tests/test_xml.py       test_xml.py-20050905091053-80b45588931a9b35
          bzrlib/tests/transport_util.py transportutil.py-20070525113600-5v2igk89s8fensom-1
          bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
          bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
          bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
          bzrlib/tests/workingtree_implementations/test_executable.py test_executable.py-20060628162557-tr7h57kl80l3ma8i-1
          bzrlib/tests/workingtree_implementations/test_inv.py test_inv.py-20070311221604-ighlq8tbn5xq0kuo-1
          bzrlib/tests/workingtree_implementations/test_parents.py test_set_parents.py-20060807231740-yicmnlci1mj8smu1-1
          bzrlib/tests/workingtree_implementations/test_rename_one.py test_rename_one.py-20070226161242-2d8ibdedl700jgio-1
          bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
          bzrlib/transport/decorator.py  decorator.py-20060402223305-e913a0f25319ab42
          bzrlib/transport/fakevfat.py   fakevfat.py-20060407072414-d59939fa1d6c79d9
          bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
          bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
          bzrlib/transport/local.py      local_transport.py-20050711165921-9b1f142bfe480c24
          bzrlib/transport/memory.py     memory.py-20051016101338-cd008dbdf69f04fc
          bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/tuned_gzip.py           tuned_gzip.py-20060407014720-5aadc518e928e8d2
          bzrlib/version.py              version.py-20060816024207-ves6ult9a11taj9t-1
          bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
          bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          bzrlib/xml4.py                 xml4.py-20050916091259-db5ab55e7e6ca324
          bzrlib/xml5.py                 xml5.py-20050907032657-aac8f960815b66b1
          bzrlib/xml6.py                 xml6.py-20060823042456-dbaaq4atrche7xy5-1
          bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
          doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
          doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
          setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
          bzrlib/_patiencediff_py.py     cdvdifflib.py-20051106064558-f8f8097fbf0db4e4
        ------------------------------------------------------------
        revno: 2535.3.55.1.8
        revision-id:andrew.bennetts at canonical.com-20070903172226-trr3kr82ekw7orlm
        parent: andrew.bennetts at canonical.com-20070903163655-f5hz05afk5elbubh
        parent: andrew.bennetts at canonical.com-20070903171210-5wjqh4lq24wn9qfp
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Tue 2007-09-04 03:22:26 +1000
        message:
          Merge from hpss-streaming.
        modified:
          doc/developers/network-protocol.txt networkprotocol.txt-20070903044232-woustorrjbmg5zol-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.7
        revision-id:andrew.bennetts at canonical.com-20070903163655-f5hz05afk5elbubh
        parent: andrew.bennetts at canonical.com-20070903163550-6sv1yn0s2u76gxcf
        parent: andrew.bennetts at canonical.com-20070903162931-ue17vnsxg3wg6je1
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Tue 2007-09-04 02:36:55 +1000
        message:
          Merge from hpss-streaming.
        ------------------------------------------------------------
        revno: 2535.3.55.1.6
        revision-id:andrew.bennetts at canonical.com-20070903163550-6sv1yn0s2u76gxcf
        parent: andrew.bennetts at canonical.com-20070903082851-455x36f4t03l4lvs
        parent: andrew.bennetts at canonical.com-20070903163442-ytmz1xw42rdhuihi
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Tue 2007-09-04 02:35:50 +1000
        message:
          Merge from repo-refactor.
        added:
          doc/developers/missing.txt     missing.txt-20070718093412-eqjvfwo0oacov5sn-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/help_topics.py          help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/option.py               option.py-20051014052914-661fb36e76e7362f
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
          bzrlib/tests/blackbox/test_locale.py test_lang.py-20060824204205-80v50j25qkuop7yn-1
          bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
          bzrlib/tests/blackbox/test_remove.py test_remove.py-20060530011439-fika5rm84lon0goe-1
          bzrlib/tests/branch_implementations/test_commit.py test_commit.py-20070206022134-117z1i5b644p63r0-1
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
          bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
          bzrlib/tests/test_help.py      test_help.py-20070419045354-6q6rq15j9e2n5fna-1
          bzrlib/tests/test_options.py   testoptions.py-20051014093702-96457cfc86319a8f
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
          bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
          bzrlib/tests/workingtree_implementations/test_remove.py test_remove.py-20070413183901-rvnp85rtc0q0sclp-1
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          doc/developers/performance-roadmap.txt performanceroadmap.t-20070507174912-mwv3xv517cs4sisd-2
          doc/developers/performance.dot performance.dot-20070527173558-rqaqxn1al7vzgcto-3
          doc/en/user-reference/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.5
        revision-id:andrew.bennetts at canonical.com-20070903082851-455x36f4t03l4lvs
        parent: andrew.bennetts at canonical.com-20070903073624-9tagkpz8mhlgpow2
        parent: andrew.bennetts at canonical.com-20070903075354-vwed9crts63i6oo0
        parent: andrew.bennetts at canonical.com-20070903080606-zdcjdzyefv5cjtcc
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Mon 2007-09-03 18:28:51 +1000
        message:
          Merge latest chunking protocol, including support for errors, fixing a test failure.
        added:
          doc/developers/network-protocol.txt networkprotocol.txt-20070903044232-woustorrjbmg5zol-1
        modified:
          bzrlib/smart/__init__.py       __init__.py-20061101100249-8jwwl0d3jr080zim-1
          bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
          doc/developers/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
            ------------------------------------------------------------
            revno: 2781.2.1
            revision-id:andrew.bennetts at canonical.com-20070903080606-zdcjdzyefv5cjtcc
            parent: pqm at pqm.ubuntu.com-20070903062644-0rt7302gl1to109v
            committer: Andrew Bennetts <andrew.bennetts at canonical.com>
            branch nick: repr-fix
            timestamp: Mon 2007-09-03 18:06:06 +1000
            message:
              Fix SmartServerResponse.__repr__.
            modified:
              bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
              bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
        ------------------------------------------------------------
        revno: 2535.3.55.1.4
        revision-id:andrew.bennetts at canonical.com-20070903073624-9tagkpz8mhlgpow2
        parent: andrew.bennetts at canonical.com-20070830153250-4gg2e2zkyfzszrnp
        parent: andrew.bennetts at canonical.com-20070903073557-g7m06f35fs9bz403
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Mon 2007-09-03 17:36:24 +1000
        message:
          Merge from repo-refactor.
        added:
          bzrlib/tests/inventory_implementations/ bzrlibtestsinventory-20070820060653-4mjbbmwhp74dsf3x-1
          bzrlib/tests/inventory_implementations/__init__.py __init__.py-20070821044532-olbadbokgv3qv1yd-1
          bzrlib/tests/inventory_implementations/basics.py basics.py-20070903044446-kdjwbiu1p1zi9phs-1
          doc/en/user-guide/hooks.txt    hooks.txt-20070829200551-7nr6e5a1io6x78uf-1
          doc/en/user-reference/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
          doc/en/user-reference/index.txt index.txt-20070830033353-ud9e03xsh24053oo-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/annotate.py             annotate.py-20050922133147-7c60541d2614f022
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
          bzrlib/msgeditor.py            msgeditor.py-20050901111708-ef6d8de98f5d8f2f
          bzrlib/option.py               option.py-20051014052914-661fb36e76e7362f
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_diff.py test_diff.py-20060110203741-aa99ac93e633d971
          bzrlib/tests/blackbox/test_nick.py test_nick.py-20061105141046-p7zovcsit44uj4w9-1
          bzrlib/tests/blackbox/test_pull.py test_pull.py-20051201144907-64959364f629947f
          bzrlib/tests/blackbox/test_send.py test_bundle.py-20060616222707-c21c8b7ea5ef57b1
          bzrlib/tests/blackbox/test_status.py teststatus.py-20050712014354-508855eb9f29f7dc
          bzrlib/tests/test_annotate.py  test_annotate.py-20061213215015-sttc9agsxomls7q0-1
          bzrlib/tests/test_inv.py       testinv.py-20050722220913-1dc326138d1a5892
          bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
          bzrlib/tests/test_options.py   testoptions.py-20051014093702-96457cfc86319a8f
          bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
          bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
          bzrlib/transport/ssh.py        ssh.py-20060824042150-0s9787kng6zv1nwq-1
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          doc/developers/update.txt      update.txt-20070713074325-vtxf9eb5c6keg30j-1
          doc/en/user-guide/index.txt    index.txt-20060622101119-tgwtdci8z769bjb9-2
          doc/en/user-guide/server.txt   server.txt-20060913044801-h939fvbwzz39gf7g-1
          doc/en/user-guide/tutorial.txt tutorial.txt-20050804190939-9dcbba2ef053bc84
        ------------------------------------------------------------
        revno: 2535.3.55.1.3
        revision-id:andrew.bennetts at canonical.com-20070830153250-4gg2e2zkyfzszrnp
        parent: andrew.bennetts at canonical.com-20070830145651-6r0rwb6ga20803q5
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Fri 2007-08-31 01:32:50 +1000
        message:
          Remove some useless mutters.
        modified:
          bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
        ------------------------------------------------------------
        revno: 2535.3.55.1.2
        revision-id:andrew.bennetts at canonical.com-20070830145651-6r0rwb6ga20803q5
        parent: andrew.bennetts at canonical.com-20070830142458-as28m7ho1sd4yeko
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Fri 2007-08-31 00:56:51 +1000
        message:
          Nasty hackery to make stream_knit_data_for_revisions response use streaming.
        modified:
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
        ------------------------------------------------------------
        revno: 2535.3.55.1.1
        revision-id:andrew.bennetts at canonical.com-20070830142458-as28m7ho1sd4yeko
        parent: andrew.bennetts at canonical.com-20070830083234-dh4woface2wv88mw
        parent: andrew.bennetts at canonical.com-20070830113212-j6zhw555ma5x21yi
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: streaming-smart-fetch
        timestamp: Fri 2007-08-31 00:24:58 +1000
        message:
          Merge from hpss-streaming.
        modified:
          bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
          bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
    ------------------------------------------------------------
    revno: 3172.1.1
    revision-id:pqm at pqm.ubuntu.com-20080111025153-mqrn9i5o3hqezw75
    parent: pqm at pqm.ubuntu.com-20080110025628-6tl4b9cmdn335suw
    parent: robertc at robertcollins.net-20080111004417-yqxhy4jdu526uslq
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Fri 2008-01-11 02:51:53 +0000
    message:
      (robertc) Provide a fuller deprecation of Graph.get_parents for
      	ParentProvider implementors. (Robert Collins)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
      bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
    ------------------------------------------------------------
    revno: 3172.2.2
    revision-id:robertc at robertcollins.net-20080111004417-yqxhy4jdu526uslq
    parent: robertc at robertcollins.net-20080110220839-ze9uhnjp04h7y9mp
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: get_parents.deprecation
    timestamp: Fri 2008-01-11 11:44:17 +1100
    message:
      Parent Providers should now implement ``get_parent_map`` returning a
      dictionary instead of ``get_parents`` returning a list.
      ``get_parents`` is now considered deprecated.  (John Arbash Meinel)
      ``Graph.get_parents`` is now deprecated. (John Arbash Meinel,
      Robert Collins)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
      bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
    ------------------------------------------------------------
    revno: 3172.2.1
    revision-id:robertc at robertcollins.net-20080110220839-ze9uhnjp04h7y9mp
    parent: pqm at pqm.ubuntu.com-20080110025628-6tl4b9cmdn335suw
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: remote.graph
    timestamp: Fri 2008-01-11 09:08:39 +1100
    message:
      ``Graph`` no longer requires the ``parents_provider`` to have a
      ``get_parents`` attribute. (Robert Collins)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
=== modified file 'NEWS'
--- a/NEWS	2008-01-11 04:33:02 +0000
+++ b/NEWS	2008-01-14 00:06:13 +0000
@@ -22,6 +22,11 @@
    * New option to use custom template-based formats in  ``bzr version-info``.
      (Lukáš Lalinský)
 
+   * New smart method, ``Repository.stream_revisions_chunked``, for fetching
+     revision data that streams revision data via a chunked encoding.  This
+     avoids buffering large amounts of revision data on the server and on the
+     client.  (Andrew Bennetts, #178353)
+
    * diff '--using' allows an external diff tool to be used for files.
      (Aaron Bentley)
 
@@ -49,6 +54,9 @@
      at the start of the file, promoting linear reads for ``bzr log`` and the
      like. This partially fixes #154129. (Robert Collins)
 
+   * Fetching between different repository formats with compatible models now
+     takes advantage of the smart method to stream revisions.  (Andrew Bennetts)
+
    * Merge directives now fetch prerequisites from the target branch if
      needed.  (Aaron Bentley)
 
@@ -111,6 +119,9 @@
    * ``reconfigure`` is able to convert trees into lightweight checkouts.
      (Aaron Bentley)
 
+   * ``reconfigure`` can safely be interrupted while fetching.
+     (Aaron Bentley, #179316)
+
    * Reduce lockdir timeout to 0 when running ``bzr serve``.  (Andrew Bennetts,
      #148087)
 
@@ -164,9 +175,15 @@
      inventories. This is primarily used by the ``revision_trees`` method, as
      direct access to inventories is discouraged. (Robert Collins)
 
+   * New method ``next_with_ghosts`` on the Graph breadth-first-search objects
+     which will split out ghosts and present parents into two separate sets,
+     useful for code which needs to be aware of ghosts (e.g. fetching data
+     cares about ghosts during revision selection). (Robert Collins)
+
    * Parent Providers should now implement ``get_parent_map`` returning a
      dictionary instead of ``get_parents`` returning a list.
-     ``get_parents`` is now considered deprecated.  (John Arbash Meinel)
+     ``Graph.get_parents`` is now deprecated. (John Arbash Meinel,
+     Robert Collins)
 
    * Patience Diff now supports arbitrary python objects, as long as they
      support ``hash()``. (John Arbash Meinel)

=== modified file 'bzrlib/debug.py'
--- a/bzrlib/debug.py	2008-01-09 07:04:23 +0000
+++ b/bzrlib/debug.py	2008-01-11 04:55:53 +0000
@@ -34,6 +34,7 @@
  * hpss - trace smart protocol requests and responses
  * http - trace http connections, requests and responses
  * index - trace major index operations
+ * knit - trace knit operations
  * lock - trace when lockdir locks are taken or released
  * merge - emit information for debugging merges
  * times - record timestamps from program start in trace file

=== modified file 'bzrlib/graph.py'
--- a/bzrlib/graph.py	2007-12-18 19:42:10 +0000
+++ b/bzrlib/graph.py	2008-01-13 23:57:17 +0000
@@ -46,6 +46,7 @@
 
 
 class DictParentsProvider(object):
+    """A parents provider for Graph objects."""
 
     def __init__(self, ancestry):
         self.ancestry = ancestry
@@ -53,10 +54,6 @@
     def __repr__(self):
         return 'DictParentsProvider(%r)' % self.ancestry
 
-    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
-    def get_parents(self, revisions):
-        return [self.ancestry.get(r, None) for r in revisions]
-
     def get_parent_map(self, keys):
         """See _StackedParentsProvider.get_parent_map"""
         ancestry = self.ancestry
@@ -71,22 +68,6 @@
     def __repr__(self):
         return "_StackedParentsProvider(%r)" % self._parent_providers
 
-    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
-    def get_parents(self, revision_ids):
-        """Find revision ids of the parents of a list of revisions
-
-        A list is returned of the same length as the input.  Each entry
-        is a list of parent ids for the corresponding input revision.
-
-        [NULL_REVISION] is used as the parent of the first user-committed
-        revision.  Its parent list is empty.
-
-        If the revision is not present (i.e. a ghost), None is used in place
-        of the list of parents.
-        """
-        found = self.get_parent_map(revision_ids)
-        return [found.get(r, None) for r in revision_ids]
-
     def get_parent_map(self, keys):
         """Get a mapping of keys => parents
 
@@ -125,12 +106,6 @@
     def __repr__(self):
         return "%s(%r)" % (self.__class__.__name__, self._real_provider)
 
-    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
-    def get_parents(self, revision_ids):
-        """See _StackedParentsProvider.get_parents"""
-        found = self.get_parent_map(revision_ids)
-        return [found.get(r, None) for r in revision_ids]
-
     def get_parent_map(self, keys):
         """See _StackedParentsProvider.get_parent_map"""
         needed = set()
@@ -168,13 +143,16 @@
 
         This should not normally be invoked directly, because there may be
         specialized implementations for particular repository types.  See
-        Repository.get_graph()
+        Repository.get_graph().
 
-        :param parents_provider: An object providing a get_parents call
-            conforming to the behavior of StackedParentsProvider.get_parents
+        :param parents_provider: An object providing a get_parent_map call
+            conforming to the behavior of
+            StackedParentsProvider.get_parent_map.
         """
-        self.get_parents = parents_provider.get_parents
-        self.get_parent_map = parents_provider.get_parent_map
+        if getattr(parents_provider, 'get_parents', None) is not None:
+            self.get_parents = parents_provider.get_parents
+        if getattr(parents_provider, 'get_parent_map', None) is not None:
+            self.get_parent_map = parents_provider.get_parent_map
         self._parents_provider = parents_provider
 
     def __repr__(self):
@@ -226,6 +204,36 @@
         return (left.difference(right).difference(common),
                 right.difference(left).difference(common))
 
+    @symbol_versioning.deprecated_method(symbol_versioning.one_one)
+    def get_parents(self, revisions):
+        """Find revision ids of the parents of a list of revisions
+
+        A list is returned of the same length as the input.  Each entry
+        is a list of parent ids for the corresponding input revision.
+
+        [NULL_REVISION] is used as the parent of the first user-committed
+        revision.  Its parent list is empty.
+
+        If the revision is not present (i.e. a ghost), None is used in place
+        of the list of parents.
+
+        Deprecated in bzr 1.2 - please see get_parent_map.
+        """
+        parents = self.get_parent_map(revisions)
+        return [parent.get(r, None) for r in revisions]
+
+    def get_parent_map(self, revisions):
+        """Get a map of key:parent_list for revisions.
+
+        This implementation delegates to get_parents, for old parent_providers
+        that do not supply get_parent_map.
+        """
+        result = {}
+        for rev, parents in self.get_parents(revisions):
+            if parents is not None:
+                result[rev] = parents
+        return result
+
     def _make_breadth_first_searcher(self, revisions):
         return _BreadthFirstSearcher(revisions, self)
 
@@ -498,39 +506,83 @@
     """
 
     def __init__(self, revisions, parents_provider):
-        self._start = set(revisions)
-        self._search_revisions = None
-        self.seen = set(revisions)
+        self._iterations = 0
+        self._next_query = set(revisions)
+        self.seen = set()
         self._parents_provider = parents_provider
+        self._returning = 'checked'
 
     def __repr__(self):
-        if self._search_revisions is not None:
-            search = 'searching=%r' % (list(self._search_revisions),)
+        if self._iterations:
+            prefix = "searching"
         else:
-            search = 'starting=%r' % (list(self._start),)
-        return ('_BreadthFirstSearcher(%s,'
-                ' seen=%r)' % (search, list(self.seen)))
+            prefix = "starting"
+        search = '%s=%r' % (prefix, list(self._next_query))
+        return ('_BreadthFirstSearcher(iterations=%d, %s,'
+                ' seen=%r)' % (self._iterations, search, list(self.seen)))
 
     def next(self):
         """Return the next ancestors of this revision.
 
         Ancestors are returned in the order they are seen in a breadth-first
-        traversal.  No ancestor will be returned more than once.
+        traversal.  No ancestor will be returned more than once. Ancestors are
+        returned before their parentage is queried, so ghosts and missing
+        revisions (including the start revisions) are included in the result.
+        This can save a round trip in LCA style calculation by allowing
+        convergence to be detected without reading the data for the revision
+        the convergence occurs on.
+
+        :return: A set of revision_ids.
         """
-        if self._search_revisions is None:
-            self._search_revisions = self._start
+        if self._returning != 'query':
+            # switch to returning the query, not the results.
+            self._returning = 'query'
+            self._iterations += 1
+            self.seen.update(self._next_query)
         else:
-            new_search_revisions = set()
-            parent_map = self._parents_provider.get_parent_map(
-                            self._search_revisions)
-            for parents in parent_map.itervalues():
-                new_search_revisions.update(p for p in parents if
-                                            p not in self.seen)
-            self._search_revisions = new_search_revisions
-        if len(self._search_revisions) == 0:
-            raise StopIteration()
-        self.seen.update(self._search_revisions)
-        return self._search_revisions
+            self._advance()
+        if len(self._next_query) == 0:
+            raise StopIteration()
+        return self._next_query
+
+    def next_with_ghosts(self):
+        """Return the next found ancestors, with ghosts split out.
+        
+        Ancestors are returned in the order they are seen in a breadth-first
+        traversal.  No ancestor will be returned more than once. Ancestors are
+        returned only after asking for their parents, which can
+
+        :return: A tuple with (present ancestors, ghost ancestors) sets.
+        """
+        if self._returning != 'checked':
+            # switch to returning the results, not the current query.
+            self._returning = 'checked'
+            self._advance()
+        if len(self._next_query) == 0:
+            raise StopIteration()
+        self._advance()
+        return self._current_present, self._current_ghosts
+
+    def _advance(self):
+        """Advance the search.
+
+        Updates self.seen, self._next_query, self._current_present,
+        self._current_ghosts.
+        """
+        self._iterations += 1
+        found_parents = set()
+        new_search_revisions = set()
+        parent_map = self._parents_provider.get_parent_map(
+                        self._next_query)
+        for rev_id, parents in parent_map.iteritems():
+            found_parents.add(rev_id)
+            new_search_revisions.update(p for p in parents if
+                                        p not in self.seen)
+        ghost_parents = self._next_query - found_parents
+        self._next_query = new_search_revisions
+        self.seen.update(self._next_query)
+        self._current_present = found_parents
+        self._current_ghosts = ghost_parents
 
     def __iter__(self):
         return self
@@ -554,13 +606,10 @@
         None of the specified revisions are required to be present in the
         search list.  In this case, the call is a no-op.
         """
-        stopped = self._search_revisions.intersection(revisions)
-        self._search_revisions = self._search_revisions.difference(revisions)
+        stopped = self._next_query.intersection(revisions)
+        self._next_query = self._next_query.difference(revisions)
         return stopped
 
     def start_searching(self, revisions):
-        if self._search_revisions is None:
-            self._start = set(revisions)
-        else:
-            self._search_revisions.update(revisions.difference(self.seen))
+        self._next_query.update(revisions.difference(self.seen))
         self.seen.update(revisions)

=== modified file 'bzrlib/help_topics/__init__.py'
--- a/bzrlib/help_topics/__init__.py	2008-01-09 07:04:23 +0000
+++ b/bzrlib/help_topics/__init__.py	2008-01-11 04:55:53 +0000
@@ -287,6 +287,7 @@
 -Dhpss         Trace smart protocol requests and responses.
 -Dhttp         Trace http connections, requests and responses
 -Dindex        Trace major index operations.
+-Dknit         Trace knit operations.
 -Dlock         Trace when lockdir locks are taken or released.
 -Dmerge        Emit information for debugging merges.
 -Dtimes        Record timestamps from program start in trace file.

=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py	2007-11-30 07:45:56 +0000
+++ b/bzrlib/knit.py	2008-01-11 07:06:36 +0000
@@ -736,7 +736,9 @@
         :seealso: get_data_stream
         """
         if format != self.get_format_signature():
-            trace.mutter('incompatible format signature inserting to %r', self)
+            if 'knit' in debug.debug_flags:
+                trace.mutter(
+                    'incompatible format signature inserting to %r', self)
             source = self._knit_from_datastream(
                 (format, data_list, reader_callable))
             self.join(source)

=== modified file 'bzrlib/reconfigure.py'
--- a/bzrlib/reconfigure.py	2007-12-13 16:38:54 +0000
+++ b/bzrlib/reconfigure.py	2008-01-11 17:59:20 +0000
@@ -216,6 +216,11 @@
         if self._create_branch and self.referenced_branch is not None:
             repo.fetch(self.referenced_branch.repository,
                        self.referenced_branch.last_revision())
+        if self._create_reference:
+            reference_branch = branch.Branch.open(self._select_bind_location())
+        if self._destroy_repository:
+            if self._create_reference:
+                reference_branch.repository.fetch(self.repository)
         last_revision_info = None
         if self._destroy_reference:
             last_revision_info = self.referenced_branch.last_revision_info()
@@ -230,7 +235,6 @@
         else:
             local_branch = self.local_branch
         if self._create_reference:
-            reference_branch = branch.Branch.open(self._select_bind_location())
             format = branch.BranchReferenceFormat().initialize(self.bzrdir,
                 reference_branch)
         if self._destroy_tree:
@@ -243,6 +247,4 @@
             bind_location = self._select_bind_location()
             local_branch.bind(branch.Branch.open(bind_location))
         if self._destroy_repository:
-            if self._create_reference:
-                reference_branch.repository.fetch(self.repository)
             self.bzrdir.destroy_repository()

=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py	2008-01-11 03:54:51 +0000
+++ b/bzrlib/remote.py	2008-01-11 05:28:46 +0000
@@ -26,13 +26,13 @@
     repository,
     revision,
 )
-from bzrlib.branch import Branch, BranchReferenceFormat
+from bzrlib.branch import BranchReferenceFormat
 from bzrlib.bzrdir import BzrDir, RemoteBzrDirFormat
 from bzrlib.config import BranchConfig, TreeConfig
 from bzrlib.decorators import needs_read_lock, needs_write_lock
 from bzrlib.errors import NoSuchRevision
 from bzrlib.lockable_files import LockableFiles
-from bzrlib.pack import ContainerReader
+from bzrlib.pack import ContainerPushParser
 from bzrlib.smart import client, vfs
 from bzrlib.symbol_versioning import (
     deprecated_method,
@@ -790,7 +790,6 @@
         from bzrlib import osutils
         import tarfile
         import tempfile
-        from StringIO import StringIO
         # TODO: Maybe a progress bar while streaming the tarball?
         note("Copying repository content as tarball...")
         tar_file = self._get_tarball('bz2')
@@ -863,15 +862,17 @@
         return self._real_repository.has_signature_for_revision_id(revision_id)
 
     def get_data_stream(self, revision_ids):
+        REQUEST_NAME = 'Repository.stream_revisions_chunked'
         path = self.bzrdir._path_for_remote_call(self._client)
         response, protocol = self._client.call_expecting_body(
-            'Repository.stream_knit_data_for_revisions', path, *revision_ids)
+            REQUEST_NAME, path, *revision_ids)
+
         if response == ('ok',):
             return self._deserialise_stream(protocol)
         elif (response == ('error', "Generic bzr smart protocol error: "
-                "bad request 'Repository.stream_knit_data_for_revisions'") or
+                "bad request '%s'" % REQUEST_NAME) or
               response == ('error', "Generic bzr smart protocol error: "
-                "bad request u'Repository.stream_knit_data_for_revisions'")):
+                "bad request u'%s'" % REQUEST_NAME)):
             protocol.cancel_read_body()
             self._ensure_real()
             return self._real_repository.get_data_stream(revision_ids)
@@ -879,18 +880,20 @@
             raise errors.UnexpectedSmartServerResponse(response)
 
     def _deserialise_stream(self, protocol):
-        buffer = StringIO(protocol.read_body_bytes())
-        reader = ContainerReader(buffer)
-        for record_names, read_bytes in reader.iter_records():
-            try:
-                # These records should have only one name, and that name
-                # should be a one-element tuple.
-                [name_tuple] = record_names
-            except ValueError:
-                raise errors.SmartProtocolError(
-                    'Repository data stream had invalid record name %r'
-                    % (record_names,))
-            yield name_tuple, read_bytes(None)
+        stream = protocol.read_streamed_body()
+        container_parser = ContainerPushParser()
+        for bytes in stream:
+            container_parser.accept_bytes(bytes)
+            records = container_parser.read_pending_records()
+            for record_names, record_bytes in records:
+                if len(record_names) != 1:
+                    # These records should have only one name, and that name
+                    # should be a one-element tuple.
+                    raise errors.SmartProtocolError(
+                        'Repository data stream had invalid record name %r'
+                        % (record_names,))
+                name_tuple = record_names[0]
+                yield name_tuple, record_bytes
 
     def insert_data_stream(self, stream):
         self._ensure_real()

=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2008-01-11 04:33:02 +0000
+++ b/bzrlib/repository.py	2008-01-14 00:06:13 +0000
@@ -842,8 +842,14 @@
             for version, options, parents, some_bytes in decoded_list:
                 data_list.append((version, options, len(some_bytes), parents))
                 knit_bytes += some_bytes
+            buffer = StringIO(knit_bytes)
+            def reader_func(count):
+                if count is None:
+                    return buffer.read()
+                else:
+                    return buffer.read(count)
             knit.insert_data_stream(
-                (format, data_list, StringIO(knit_bytes).read))
+                (format, data_list, reader_func))
 
     @needs_read_lock
     def missing_revision_ids(self, other, revision_id=None, find_ghosts=True):
@@ -2851,14 +2857,12 @@
     def is_compatible(source, target):
         if not isinstance(source, remote.RemoteRepository):
             return False
+        # Is source's model compatible with target's model?
         source._ensure_real()
         real_source = source._real_repository
-        # Is source's model compatible with target's model, and are they the
-        # same format?  Currently we can only optimise fetching from an
-        # identical model & format repo.
         assert not isinstance(real_source, remote.RemoteRepository), (
             "We don't support remote repos backed by remote repos yet.")
-        return real_source._format == target._format
+        return InterRepository._same_model(real_source, target)
 
     @needs_write_lock
     def fetch(self, revision_id=None, pb=None, find_ghosts=False):

=== modified file 'bzrlib/smart/client.py'
--- a/bzrlib/smart/client.py	2007-08-06 05:11:55 +0000
+++ b/bzrlib/smart/client.py	2007-08-30 14:56:51 +0000
@@ -43,7 +43,7 @@
             body = smart_protocol.read_body_bytes()
         """
         request = self.get_smart_medium().get_request()
-        smart_protocol = protocol.SmartClientRequestProtocolOne(request)
+        smart_protocol = protocol.SmartClientRequestProtocolTwo(request)
         smart_protocol.call(method, *args)
         return smart_protocol.read_response_tuple(expect_body=True), smart_protocol
 

=== modified file 'bzrlib/smart/repository.py'
--- a/bzrlib/smart/repository.py	2007-11-26 02:08:13 +0000
+++ b/bzrlib/smart/repository.py	2008-01-02 08:09:32 +0000
@@ -24,7 +24,7 @@
 
 from bzrlib import errors
 from bzrlib.bzrdir import BzrDir
-from bzrlib.pack import ContainerWriter
+from bzrlib.pack import ContainerSerialiser
 from bzrlib.smart.request import (
     FailedSmartServerResponse,
     SmartServerRequest,
@@ -258,14 +258,38 @@
 
     def _do_repository_request(self, repository, revision_ids):
         stream = repository.get_data_stream(revision_ids)
-        filelike = StringIO()
-        pack = ContainerWriter(filelike.write)
-        pack.begin()
+        buffer = StringIO()
+        pack = ContainerSerialiser()
+        buffer.write(pack.begin())
         try:
             for name_tuple, bytes in stream:
-                pack.add_bytes_record(bytes, [name_tuple])
+                buffer.write(pack.bytes_record(bytes, [name_tuple]))
         except errors.RevisionNotPresent, e:
             return FailedSmartServerResponse(('NoSuchRevision', e.revision_id))
+        buffer.write(pack.end())
+        return SuccessfulSmartServerResponse(('ok',), buffer.getvalue())
+
+
+class SmartServerRepositoryStreamRevisionsChunked(SmartServerRepositoryRequest):
+
+    def do_repository_request(self, repository, *revision_ids):
+        repository.lock_read()
+        try:
+            stream = repository.get_data_stream(revision_ids)
+        except Exception:
+            repository.unlock()
+            raise
+        return SuccessfulSmartServerResponse(('ok',),
+            body_stream=self.body_stream(stream, repository))
+
+    def body_stream(self, stream, repository):
+        pack = ContainerSerialiser()
+        yield pack.begin()
+        try:
+            for name_tuple, bytes in stream:
+                yield pack.bytes_record(bytes, [name_tuple])
+        except errors.RevisionNotPresent, e:
+            yield FailedSmartServerResponse(('NoSuchRevision', e.revision_id))
+        repository.unlock()
         pack.end()
-        return SuccessfulSmartServerResponse(('ok',), filelike.getvalue())
 

=== modified file 'bzrlib/smart/request.py'
--- a/bzrlib/smart/request.py	2007-10-19 05:38:36 +0000
+++ b/bzrlib/smart/request.py	2008-01-02 07:58:37 +0000
@@ -106,8 +106,8 @@
                 other.body_stream is self.body_stream)
 
     def __repr__(self):
-        return "<SmartServerResponse %r args=%r body=%r>" % (
-            self.is_successful(), self.args, self.body)
+        return ("<SmartServerResponse successful=%s args=%r body=%r>"
+                % (self.is_successful(), self.args, self.body))
 
 
 class FailedSmartServerResponse(SmartServerResponse):
@@ -319,7 +319,16 @@
                                'bzrlib.smart.repository',
                                'SmartServerRepositoryGatherStats')
 request_handlers.register_lazy(
-    'Repository.stream_knit_data_for_revisions', 'bzrlib.smart.repository',
+    'Repository.stream_knit_data_for_revisions',
+    'bzrlib.smart.repository',
+    'SmartServerRepositoryStreamKnitDataForRevisions')
+request_handlers.register_lazy(
+    'Repository.stream_revisions_chunked',
+    'bzrlib.smart.repository',
+    'SmartServerRepositoryStreamRevisionsChunked')
+request_handlers.register_lazy(
+    'Repository.chunked_stream_knit_data_for_revisions',
+    'bzrlib.smart.repository',
     'SmartServerRepositoryStreamKnitDataForRevisions')
 request_handlers.register_lazy(
     'Repository.get_revision_graph', 'bzrlib.smart.repository', 'SmartServerRepositoryGetRevisionGraph')

=== modified file 'bzrlib/tests/test_graph.py'
--- a/bzrlib/tests/test_graph.py	2007-12-18 19:42:10 +0000
+++ b/bzrlib/tests/test_graph.py	2008-01-13 23:57:17 +0000
@@ -244,10 +244,6 @@
         self.calls = []
         self._real_parents_provider = parents_provider
 
-    def get_parents(self, nodes):
-        self.calls.extend(nodes)
-        return self._real_parents_provider.get_parents(nodes)
-
     def get_parent_map(self, nodes):
         self.calls.extend(nodes)
         return self._real_parents_provider.get_parent_map(nodes)
@@ -450,23 +446,6 @@
         self.assertEqual((set(['e']), set(['f', 'g'])),
                          graph.find_difference('e', 'f'))
 
-    def test_stacked_parents_provider_get_parents(self):
-        parents1 = _mod_graph.DictParentsProvider({'rev2': ['rev3']})
-        parents2 = _mod_graph.DictParentsProvider({'rev1': ['rev4']})
-        stacked = _mod_graph._StackedParentsProvider([parents1, parents2])
-        self.assertEqual([['rev4',], ['rev3']],
-             self.applyDeprecated(symbol_versioning.one_one,
-                                  stacked.get_parents, ['rev1', 'rev2']))
-        self.assertEqual([['rev3',], ['rev4']],
-             self.applyDeprecated(symbol_versioning.one_one,
-                                  stacked.get_parents, ['rev2', 'rev1']))
-        self.assertEqual([['rev3',], ['rev3']],
-             self.applyDeprecated(symbol_versioning.one_one,
-                         stacked.get_parents, ['rev2', 'rev2']))
-        self.assertEqual([['rev4',], ['rev4']],
-             self.applyDeprecated(symbol_versioning.one_one,
-                         stacked.get_parents, ['rev1', 'rev1']))
-
     def test_stacked_parents_provider(self):
         parents1 = _mod_graph.DictParentsProvider({'rev2': ['rev3']})
         parents2 = _mod_graph.DictParentsProvider({'rev1': ['rev4']})
@@ -626,13 +605,6 @@
         """
         class stub(object):
             pass
-        def get_parents(keys):
-            result = []
-            for key in keys:
-                if key == 'deeper':
-                    self.fail('key deeper was accessed')
-                result.append(graph_dict[key])
-            return result
         def get_parent_map(keys):
             result = {}
             for key in keys:
@@ -641,7 +613,6 @@
                 result[key] = graph_dict[key]
             return result
         an_obj = stub()
-        an_obj.get_parents = get_parents
         an_obj.get_parent_map = get_parent_map
         graph = _mod_graph.Graph(an_obj)
         return graph.heads(search)
@@ -681,6 +652,70 @@
         self.assertEqual(set(['h1', 'h2']),
             self._run_heads_break_deeper(graph_dict, ['h1', 'h2']))
 
+    def test_breadth_first_search_start_ghosts(self):
+        parent_graph = {}
+        parents_provider = InstrumentedParentsProvider(
+            _mod_graph.DictParentsProvider(parent_graph))
+        graph = _mod_graph.Graph(parents_provider)
+        # with_ghosts reports the ghosts
+        search = graph._make_breadth_first_searcher(['a-ghost'])
+        self.assertEqual((set(), set(['a-ghost'])), search.next_with_ghosts())
+        self.assertRaises(StopIteration, search.next_with_ghosts)
+        # next includes them
+        search = graph._make_breadth_first_searcher(['a-ghost'])
+        self.assertEqual(set(['a-ghost']), search.next())
+        self.assertRaises(StopIteration, search.next)
+
+    def test_breadth_first_search_deep_ghosts(self):
+        parent_graph = {
+            'head':['present'],
+            'present':['child', 'ghost'],
+            'child':[],
+            }
+        parents_provider = InstrumentedParentsProvider(
+            _mod_graph.DictParentsProvider(parent_graph))
+        graph = _mod_graph.Graph(parents_provider)
+        # with_ghosts reports the ghosts
+        search = graph._make_breadth_first_searcher(['head'])
+        self.assertEqual((set(['head']), set()), search.next_with_ghosts())
+        self.assertEqual((set(['present']), set()), search.next_with_ghosts())
+        self.assertEqual((set(['child']), set(['ghost'])),
+            search.next_with_ghosts())
+        self.assertRaises(StopIteration, search.next_with_ghosts)
+        # next includes them
+        search = graph._make_breadth_first_searcher(['head'])
+        self.assertEqual(set(['head']), search.next())
+        self.assertEqual(set(['present']), search.next())
+        self.assertEqual(set(['child', 'ghost']),
+            search.next())
+        self.assertRaises(StopIteration, search.next)
+
+    def test_breadth_first_search_change_next_to_next_with_ghosts(self):
+        # To make the API robust, we allow changing from next() to
+        # next_with_ghosts() and vice verca.
+        parent_graph = {
+            'head':['present'],
+            'present':['child', 'ghost'],
+            'child':[],
+            }
+        parents_provider = InstrumentedParentsProvider(
+            _mod_graph.DictParentsProvider(parent_graph))
+        graph = _mod_graph.Graph(parents_provider)
+        # with_ghosts reports the ghosts
+        search = graph._make_breadth_first_searcher(['head'])
+        self.assertEqual((set(['head']), set()), search.next_with_ghosts())
+        self.assertEqual(set(['present']), search.next())
+        self.assertEqual((set(['child']), set(['ghost'])),
+            search.next_with_ghosts())
+        self.assertRaises(StopIteration, search.next)
+        # next includes them
+        search = graph._make_breadth_first_searcher(['head'])
+        self.assertEqual(set(['head']), search.next())
+        self.assertEqual((set(['present']), set()), search.next_with_ghosts())
+        self.assertEqual(set(['child', 'ghost']),
+            search.next())
+        self.assertRaises(StopIteration, search.next_with_ghosts)
+
 
 class TestCachingParentsProvider(tests.TestCase):
 
@@ -690,20 +725,6 @@
         self.inst_pp = InstrumentedParentsProvider(dict_pp)
         self.caching_pp = _mod_graph.CachingParentsProvider(self.inst_pp)
 
-    def test_get_parents(self):
-        """Requesting the same revision should be returned from cache"""
-        self.assertEqual({}, self.caching_pp._cache)
-        self.assertEqual([('b',)],
-            self.applyDeprecated(symbol_versioning.one_one,
-            self.caching_pp.get_parents, ['a']))
-        self.assertEqual(['a'], self.inst_pp.calls)
-        self.assertEqual([('b',)],
-            self.applyDeprecated(symbol_versioning.one_one,
-            self.caching_pp.get_parents, ['a']))
-        # No new call, as it should have been returned from the cache
-        self.assertEqual(['a'], self.inst_pp.calls)
-        self.assertEqual({'a':('b',)}, self.caching_pp._cache)
-
     def test_get_parent_map(self):
         """Requesting the same revision should be returned from cache"""
         self.assertEqual({}, self.caching_pp._cache)

=== modified file 'bzrlib/tests/test_osutils.py'
--- a/bzrlib/tests/test_osutils.py	2008-01-09 23:21:45 +0000
+++ b/bzrlib/tests/test_osutils.py	2008-01-11 04:55:53 +0000
@@ -1114,6 +1114,7 @@
  * hpss - trace smart protocol requests and responses
  * http - trace http connections, requests and responses
  * index - trace major index operations
+ * knit - trace knit operations
  * lock - trace when lockdir locks are taken or released
  * merge - emit information for debugging merges
  * times - record timestamps from program start in trace file

=== modified file 'bzrlib/tests/test_reconfigure.py'
--- a/bzrlib/tests/test_reconfigure.py	2007-12-13 16:38:54 +0000
+++ b/bzrlib/tests/test_reconfigure.py	2008-01-11 17:59:20 +0000
@@ -200,6 +200,21 @@
         self.assertRaises(errors.NoRepositoryPresent,
                           child.bzrdir.open_repository)
 
+    def test_branch_to_lightweight_checkout_failure(self):
+        parent = self.make_branch('parent')
+        child = parent.bzrdir.sprout('child').open_workingtree()
+        child.commit('test', rev_id='new-commit')
+        reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(
+            child.bzrdir)
+        old_Repository_fetch = repository.Repository.fetch
+        repository.Repository.fetch = None
+        try:
+            self.assertRaises(TypeError, reconfiguration.apply)
+        finally:
+            repository.Repository.fetch = old_Repository_fetch
+        child = _mod_branch.Branch.open('child')
+        self.assertContainsRe(child.base, 'child/$')
+
     def test_lightweight_checkout_to_lightweight_checkout(self):
         parent = self.make_branch('parent')
         checkout = parent.create_checkout('checkout', lightweight=True)

=== modified file 'bzrlib/tests/test_remote.py'
--- a/bzrlib/tests/test_remote.py	2007-10-12 06:24:42 +0000
+++ b/bzrlib/tests/test_remote.py	2008-01-11 05:46:54 +0000
@@ -108,10 +108,13 @@
     """Lookalike SmartClientRequestProtocolOne allowing body reading tests."""
 
     def __init__(self, body, fake_client):
-        self._body_buffer = StringIO(body)
+        self.body = body
+        self._body_buffer = None
         self._fake_client = fake_client
 
     def read_body_bytes(self, count=-1):
+        if self._body_buffer is None:
+            self._body_buffer = StringIO(self.body)
         bytes = self._body_buffer.read(count)
         if self._body_buffer.tell() == len(self._body_buffer.getvalue()):
             self._fake_client.expecting_body = False
@@ -120,6 +123,9 @@
     def cancel_read_body(self):
         self._fake_client.expecting_body = False
 
+    def read_streamed_body(self):
+        return self.body
+
 
 class FakeClient(_SmartClient):
     """Lookalike for _SmartClient allowing testing."""
@@ -701,7 +707,7 @@
             responses, transport_path)
 
         # The null revision is always there, so has_revision(None) == True.
-        self.assertEqual(True, repo.has_revision(None))
+        self.assertEqual(True, repo.has_revision(NULL_REVISION))
 
         # The remote repo shouldn't be accessed.
         self.assertEqual([], client._calls)
@@ -775,6 +781,13 @@
         pack_file.seek(0)
         return pack_file
 
+    def make_pack_stream(self, records):
+        pack_serialiser = pack.ContainerSerialiser()
+        yield pack_serialiser.begin()
+        for bytes, names in records:
+            yield pack_serialiser.bytes_record(bytes, names)
+        yield pack_serialiser.end()
+
     def test_bad_pack_from_server(self):
         """A response with invalid data (e.g. it has a record with multiple
         names) triggers an exception.
@@ -783,8 +796,8 @@
         malformed data should be.
         """
         record = ('bytes', [('name1',), ('name2',)])
-        pack_file = self.make_pack_file([record])
-        responses = [(('ok',), pack_file.getvalue()), ]
+        pack_stream = self.make_pack_stream([record])
+        responses = [(('ok',), pack_stream), ]
         transport_path = 'quack'
         repo, client = self.setup_fake_client_and_repository(
             responses, transport_path)
@@ -795,7 +808,7 @@
         """If the server doesn't recognise this request, fallback to VFS."""
         error_msg = (
             "Generic bzr smart protocol error: "
-            "bad request 'Repository.stream_knit_data_for_revisions'")
+            "bad request 'Repository.stream_revisions_chunked'")
         responses = [
             (('error', error_msg), '')]
         repo, client = self.setup_fake_client_and_repository(

=== modified file 'bzrlib/tests/test_smart.py'
--- a/bzrlib/tests/test_smart.py	2007-11-26 03:36:30 +0000
+++ b/bzrlib/tests/test_smart.py	2008-01-02 07:58:37 +0000
@@ -29,7 +29,11 @@
 import tarfile
 
 from bzrlib import bzrdir, errors, pack, smart, tests
-from bzrlib.smart.request import SmartServerResponse
+from bzrlib.smart.request import (
+    FailedSmartServerResponse,
+    SmartServerResponse,
+    SuccessfulSmartServerResponse,
+    )
 import bzrlib.smart.bzrdir
 import bzrlib.smart.branch
 import bzrlib.smart.repository
@@ -814,6 +818,54 @@
             response)
 
 
+class TestSmartServerRepositoryStreamRevisionsChunked(tests.TestCaseWithTransport):
+
+    def test_fetch_revisions(self):
+        backing = self.get_transport()
+        request = smart.repository.SmartServerRepositoryStreamRevisionsChunked(
+            backing)
+        tree = self.make_branch_and_memory_tree('.')
+        tree.lock_write()
+        tree.add('')
+        rev_id1_utf8 = u'\xc8'.encode('utf-8')
+        rev_id2_utf8 = u'\xc9'.encode('utf-8')
+        r1 = tree.commit('1st commit', rev_id=rev_id1_utf8)
+        r1 = tree.commit('2nd commit', rev_id=rev_id2_utf8)
+        tree.unlock()
+
+        response = request.execute(backing.local_abspath(''), rev_id2_utf8)
+        self.assertEqual(('ok',), response.args)
+        from cStringIO import StringIO
+        parser = pack.ContainerPushParser()
+        names = []
+        for stream_bytes in response.body_stream:
+            parser.accept_bytes(stream_bytes)
+            for [name], record_bytes in parser.read_pending_records():
+                names.append(name)
+                # The bytes should be a valid bencoded string.
+                bencode.bdecode(record_bytes)
+                # XXX: assert that the bencoded knit records have the right
+                # contents?
+        
+    def test_no_such_revision_error(self):
+        backing = self.get_transport()
+        request = smart.repository.SmartServerRepositoryStreamRevisionsChunked(
+            backing)
+        repo = self.make_repository('.')
+        rev_id1_utf8 = u'\xc8'.encode('utf-8')
+        response = request.execute(backing.local_abspath(''), rev_id1_utf8)
+        # There's no error initially.
+        self.assertTrue(response.is_successful())
+        self.assertEqual(('ok',), response.args)
+        # We only get an error while streaming the body.
+        body = list(response.body_stream)
+        last_chunk = body[-1]
+        self.assertIsInstance(last_chunk, FailedSmartServerResponse)
+        self.assertEqual(
+            last_chunk,
+            FailedSmartServerResponse(('NoSuchRevision', rev_id1_utf8)))
+
+
 class TestSmartServerIsReadonly(tests.TestCaseWithTransport):
 
     def test_is_readonly_no(self):
@@ -881,7 +933,7 @@
             smart.repository.SmartServerRepositoryLockWrite)
         self.assertEqual(
             smart.request.request_handlers.get(
-                'Repository.stream_knit_data_for_revisions'),
+                'Repository.chunked_stream_knit_data_for_revisions'),
             smart.repository.SmartServerRepositoryStreamKnitDataForRevisions)
         self.assertEqual(
             smart.request.request_handlers.get('Repository.tarball'),

=== modified file 'bzrlib/tests/test_smart_transport.py'
--- a/bzrlib/tests/test_smart_transport.py	2007-12-24 15:29:10 +0000
+++ b/bzrlib/tests/test_smart_transport.py	2008-01-11 05:08:20 +0000
@@ -2277,6 +2277,8 @@
             ('foo', 'bar'), 'bytes')
         self.assertEqual(('foo', 'bar'), response.args)
         self.assertEqual('bytes', response.body)
+        # repr(response) doesn't trigger exceptions.
+        repr(response)
 
     def test_construct_with_body_stream(self):
         bytes_iterable = ['abc']
@@ -2306,6 +2308,8 @@
         response = request.FailedSmartServerResponse(('foo', 'bar'), 'bytes')
         self.assertEqual(('foo', 'bar'), response.args)
         self.assertEqual('bytes', response.body)
+        # repr(response) doesn't trigger exceptions.
+        repr(response)
 
     def test_is_successful(self):
         """is_successful should return False for FailedSmartServerResponse."""



More information about the bazaar-commits mailing list