Rev 3467: merge bzr.dev in http://bzr.arbash-meinel.com/branches/bzr/1.6-dev/status_double_pending_235407

John Arbash Meinel john at arbash-meinel.com
Wed Jun 4 18:55:06 BST 2008


At http://bzr.arbash-meinel.com/branches/bzr/1.6-dev/status_double_pending_235407

------------------------------------------------------------
revno: 3467
revision-id: john at arbash-meinel.com-20080604175452-l0iwbtdlkdrbpnjc
parent: john at arbash-meinel.com-20080604175258-ez2d1z1vpnucpjwy
parent: pqm at pqm.ubuntu.com-20080604174215-d0m8mjs939ek9ed7
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: status_double_pending_235407
timestamp: Wed 2008-06-04 12:54:52 -0500
message:
  merge bzr.dev
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
  bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
  bzrlib/lockdir.py              lockdir.py-20060220222025-98258adf27fbdda3
  bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
  bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
  bzrlib/smart/message.py        message.py-20080222013625-ncqmh3nrxjkxab87-1
  bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
  bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
  bzrlib/tests/test_lockdir.py   test_lockdir.py-20060220222025-33d4221569a3d600
  bzrlib/tests/test_revisionspec.py testrevisionnamespaces.py-20050711050225-8b4af89e6b1efe84
  bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
  bzrlib/tests/test_switch.py    test_switch.py-20071116011000-v5lnw7d2wkng9eux-2
  bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3462.1.8
    revision-id: pqm at pqm.ubuntu.com-20080604174215-d0m8mjs939ek9ed7
    parent: pqm at pqm.ubuntu.com-20080604075316-2zq1pdapom9r80zr
    parent: jelmer at samba.org-20080604153249-0o340pscw459x3sq
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Wed 2008-06-04 18:42:15 +0100
    message:
      (Jelmer) Move update_revisions() implementation from BzrBranch to
      	Branch.
    modified:
      bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
        ------------------------------------------------------------
        revno: 3462.5.1
        revision-id: jelmer at samba.org-20080604153249-0o340pscw459x3sq
        parent: pqm at pqm.ubuntu.com-20080602222734-9ojr7ubruggqcjau
        committer: Jelmer Vernooij <jelmer at samba.org>
        branch nick: bzr.dev
        timestamp: Wed 2008-06-04 17:32:49 +0200
        message:
          Move implementation of update_revisions() from BzrBranch to Branch as it only uses publib functions.
        modified:
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
    ------------------------------------------------------------
    revno: 3462.1.7
    revision-id: pqm at pqm.ubuntu.com-20080604075316-2zq1pdapom9r80zr
    parent: pqm at pqm.ubuntu.com-20080603072242-omtkkk586pc5k4d4
    parent: mbp at sourcefrog.net-20080604072935-fan2dyggvc1hhkgt
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Wed 2008-06-04 08:53:16 +0100
    message:
      (mbp) Update more users of default file modes from control_files to bzrdir
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
      bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
        ------------------------------------------------------------
        revno: 3462.4.1
        revision-id: mbp at sourcefrog.net-20080604072935-fan2dyggvc1hhkgt
        parent: pqm at pqm.ubuntu.com-20080603072242-omtkkk586pc5k4d4
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: filemodes
        timestamp: Wed 2008-06-04 17:29:35 +1000
        message:
          Update more users of default file modes from control_files to bzrdir
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3462.1.6
    revision-id: pqm at pqm.ubuntu.com-20080603072242-omtkkk586pc5k4d4
    parent: pqm at pqm.ubuntu.com-20080603024259-ml79gk3n5uywnxe0
    parent: mbp at sourcefrog.net-20080603065634-2yczyrm9jgmzh2hr
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2008-06-03 08:22:42 +0100
    message:
      (mbp) merge 1.6b1 back to trunk
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
        ------------------------------------------------------------
        revno: 3462.3.2
        revision-id: mbp at sourcefrog.net-20080603065634-2yczyrm9jgmzh2hr
        parent: mbp at sourcefrog.net-20080603065559-6memzjge3lyy27o3
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: integration
        timestamp: Tue 2008-06-03 16:56:34 +1000
        message:
          Correction to news summary
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 3462.3.1
        revision-id: mbp at sourcefrog.net-20080603065559-6memzjge3lyy27o3
        parent: pqm at pqm.ubuntu.com-20080601233619-di6or8d3o26n917q
        parent: mbp at sourcefrog.net-20080602075120-tr2t0bl5a9mz2owg
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: integration
        timestamp: Tue 2008-06-03 16:55:59 +1000
        message:
          Merge back 1.6beta1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
        ------------------------------------------------------------
        revno: 3462.2.1
        revision-id: mbp at sourcefrog.net-20080602075120-tr2t0bl5a9mz2owg
        parent: pqm at pqm.ubuntu.com-20080601233619-di6or8d3o26n917q
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: prepare-1.6beta1
        timestamp: Mon 2008-06-02 17:51:20 +1000
        message:
          Preparing 1.6beta1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
    ------------------------------------------------------------
    revno: 3462.1.5
    revision-id: pqm at pqm.ubuntu.com-20080603024259-ml79gk3n5uywnxe0
    parent: pqm at pqm.ubuntu.com-20080602225022-z6zutdo9hvu0fycm
    parent: andrew.bennetts at canonical.com-20080603021334-z8pv02xea1xpmq2r
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2008-06-03 03:42:59 +0100
    message:
      (Martin Albisetti) Better message when a repository is locked.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/lockdir.py              lockdir.py-20060220222025-98258adf27fbdda3
      bzrlib/tests/test_lockdir.py   test_lockdir.py-20060220222025-33d4221569a3d600
        ------------------------------------------------------------
        revno: 3441.4.4
        revision-id: andrew.bennetts at canonical.com-20080603021334-z8pv02xea1xpmq2r
        parent: andrew.bennetts at canonical.com-20080603020925-g947drfzo9ij1y6p
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: bzr.break_lock
        timestamp: Tue 2008-06-03 12:13:34 +1000
        message:
          Add NEWS entry.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 3441.4.3
        revision-id: andrew.bennetts at canonical.com-20080603020925-g947drfzo9ij1y6p
        parent: argentina at gmail.com-20080521021343-zpjiqmc8h162ztcf
        parent: pqm at pqm.ubuntu.com-20080602225022-z6zutdo9hvu0fycm
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: bzr.break_lock
        timestamp: Tue 2008-06-03 12:09:25 +1000
        message:
          Merge from bzr.dev.
        added:
          bzrlib/tests/file_utils.py     file_utils.py-20080506145406-a1h3ydg2lsh2iriy-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
          bzrlib/lockable_files.py       control_files.py-20051111201905-bb88546e799d669f
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
          bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          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/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
          bzrlib/smart/branch.py         branch.py-20061124031907-mzh3pla28r83r97f-1
          bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
          bzrlib/smart/medium.py         medium.py-20061103051856-rgu2huy59fkz902q-1
          bzrlib/smart/message.py        message.py-20080222013625-ncqmh3nrxjkxab87-1
          bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/symbol_versioning.py    symbol_versioning.py-20060105104851-9ecf8af605d15a80
          bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
          bzrlib/tests/blackbox/test_ls.py test_ls.py-20060712232047-0jraqpecwngee12y-1
          bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
          bzrlib/tests/branch_implementations/test_permissions.py test_permissions.py-20060210110243-245c01403bf0fde6
          bzrlib/tests/branch_implementations/test_push.py test_push.py-20070130153159-fhfap8uoifevg30j-1
          bzrlib/tests/branch_implementations/test_update.py test_update.py-20060305010612-e68efbcbb1baa69f
          bzrlib/tests/repository_implementations/test_has_same_location.py test_has_same_locati-20070807074648-2i2ah82fbe83iys7-1
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
          bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
          bzrlib/tests/test_errors.py    test_errors.py-20060210110251-41aba2deddf936a8
          bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
          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_merge_core.py test_merge_core.py-20050824132511-eb99b23a0eec641b
          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_permissions.py test_permissions.py-20051215004520-ccf475789c80e80c
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_revisionspec.py testrevisionnamespaces.py-20050711050225-8b4af89e6b1efe84
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          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_switch.py    test_switch.py-20071116011000-v5lnw7d2wkng9eux-2
          bzrlib/tests/test_symbol_versioning.py test_symbol_versioning.py-20060105104851-51d7722c2018d42b
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
          bzrlib/tests/test_workingtree.py testworkingtree.py-20051004024258-b88d0fe8f101d468
          bzrlib/tests/workingtree_implementations/test_basis_inventory.py test_basis_inventory.py-20051218151655-3650468941091309
          bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
          bzrlib/transport/fakenfs.py    fakenfs.py-20060402223312-0e29c7275aa384dd
          bzrlib/transport/http/response.py _response.py-20060613154423-a2ci7hd4iw5c7fnt-1
          bzrlib/uncommit.py             uncommit.py-20050626215513-5ec509fa425b305c
          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/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
          doc/developers/releasing.txt   releasing.txt-20080502015919-fnrcav8fwy8ccibu-1
          doc/developers/tortoise-strategy.txt tortoisestrategy.txt-20080403024510-2ahdqrvnwqrb5p5t-1
          doc/en/user-guide/branching_a_project.txt branching_a_project.-20071122141511-0knao2lklsdsvb1q-2
          doc/en/user-guide/partner_intro.txt partner_workflow.txt-20071122141511-0knao2lklsdsvb1q-4
          doc/en/user-guide/releasing_a_project.txt releasing_a_project.-20071121073725-0corxykv5irjal00-5
          doc/en/user-guide/svn_plugin.txt svn_plugin.txt-20080509065016-cjc90f46407vi9a0-2
          doc/en/user-guide/undoing_mistakes.txt undoing_mistakes.txt-20071121092300-8fyacngt1w98e5mp-1
        ------------------------------------------------------------
        revno: 3441.4.2
        revision-id: argentina at gmail.com-20080521021343-zpjiqmc8h162ztcf
        parent: argentina at gmail.com-20080521013852-yv6uocjzxkorol98
        committer: Martin Albisetti <argentina at gmail.com>
        branch nick: bzr.break_lock
        timestamp: Tue 2008-05-20 23:13:43 -0300
        message:
          Fixed failing tests
        modified:
          bzrlib/tests/test_lockdir.py   test_lockdir.py-20060220222025-33d4221569a3d600
        ------------------------------------------------------------
        revno: 3441.4.1
        revision-id: argentina at gmail.com-20080521013852-yv6uocjzxkorol98
        parent: pqm at pqm.ubuntu.com-20080520210027-wetfxldz1ggc5u2a
        committer: Martin Albisetti <argentina at gmail.com>
        branch nick: bzr.break_lock
        timestamp: Tue 2008-05-20 22:38:52 -0300
        message:
          Change locked error to help the user resolve the situation
        modified:
          bzrlib/lockdir.py              lockdir.py-20060220222025-98258adf27fbdda3
    ------------------------------------------------------------
    revno: 3462.1.4
    revision-id: pqm at pqm.ubuntu.com-20080602225022-z6zutdo9hvu0fycm
    parent: pqm at pqm.ubuntu.com-20080602222734-9ojr7ubruggqcjau
    parent: john at arbash-meinel.com-20080522224412-2dppq2rn7vpvbz4a
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Mon 2008-06-02 23:50:22 +0100
    message:
      (jam) Give Aaron the benefit of bug #202928
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 3449.3.1
        revision-id: john at arbash-meinel.com-20080522224412-2dppq2rn7vpvbz4a
        parent: pqm at pqm.ubuntu.com-20080522125310-lneifpa40hzg4lu2
        committer: John Arbash Meinel <john at arbash-meinel.com>
        branch nick: jam-integration
        timestamp: Thu 2008-05-22 17:44:12 -0500
        message:
          minor NEWS tweaks, including rewarding Aaron with bug #202928
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
    ------------------------------------------------------------
    revno: 3462.1.3
    revision-id: pqm at pqm.ubuntu.com-20080602222734-9ojr7ubruggqcjau
    parent: pqm at pqm.ubuntu.com-20080601233619-di6or8d3o26n917q
    parent: john at arbash-meinel.com-20080528223048-dbrnob3nzv7wdp02
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Mon 2008-06-02 23:27:34 +0100
    message:
      (jam) Deprecate branch.missing_revisions()
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
      bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
      bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
      bzrlib/tests/test_switch.py    test_switch.py-20071116011000-v5lnw7d2wkng9eux-2
        ------------------------------------------------------------
        revno: 3445.2.3
        revision-id: john at arbash-meinel.com-20080528223048-dbrnob3nzv7wdp02
        parent: john at arbash-meinel.com-20080521154556-2d5q6xqlailg6d1j
        parent: pqm at pqm.ubuntu.com-20080527013230-8qjaju10duxpy3e2
        committer: John Arbash Meinel <john at arbash-meinel.com>
        branch nick: missing
        timestamp: Wed 2008-05-28 17:30:48 -0500
        message:
          merge bzr.dev
        added:
          bzrlib/tests/file_utils.py     file_utils.py-20080506145406-a1h3ydg2lsh2iriy-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
          bzrlib/lockable_files.py       control_files.py-20051111201905-bb88546e799d669f
          bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
          bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/smart/branch.py         branch.py-20061124031907-mzh3pla28r83r97f-1
          bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
          bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
          bzrlib/tests/branch_implementations/test_push.py test_push.py-20070130153159-fhfap8uoifevg30j-1
          bzrlib/tests/repository_implementations/test_has_same_location.py test_has_same_locati-20070807074648-2i2ah82fbe83iys7-1
          bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
          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_core.py test_merge_core.py-20050824132511-eb99b23a0eec641b
          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_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
          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_workingtree.py testworkingtree.py-20051004024258-b88d0fe8f101d468
          bzrlib/tests/workingtree_implementations/test_basis_inventory.py test_basis_inventory.py-20051218151655-3650468941091309
          bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
          bzrlib/transport/fakenfs.py    fakenfs.py-20060402223312-0e29c7275aa384dd
          bzrlib/transport/http/response.py _response.py-20060613154423-a2ci7hd4iw5c7fnt-1
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          doc/developers/tortoise-strategy.txt tortoisestrategy.txt-20080403024510-2ahdqrvnwqrb5p5t-1
        ------------------------------------------------------------
        revno: 3445.2.2
        revision-id: john at arbash-meinel.com-20080521154556-2d5q6xqlailg6d1j
        parent: john at arbash-meinel.com-20080521154247-sqpkv9um9grku9e1
        committer: John Arbash Meinel <john at arbash-meinel.com>
        branch nick: missing
        timestamp: Wed 2008-05-21 10:45:56 -0500
        message:
          Move the test to a branch_implementations test
        modified:
          bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
        ------------------------------------------------------------
        revno: 3445.2.1
        revision-id: john at arbash-meinel.com-20080521154247-sqpkv9um9grku9e1
        parent: pqm at pqm.ubuntu.com-20080521104134-beoquporep2cpghs
        committer: John Arbash Meinel <john at arbash-meinel.com>
        branch nick: missing
        timestamp: Wed 2008-05-21 10:42:47 -0500
        message:
          Add tests for Branch.missing_revisions and deprecate it.
          
          The api uses a 'stop_revision' but it is supposed to be a revno, not a
          revision_id. The code itself is very crufty and slow (and doesn't take
          a read_lock). But rather than fix it, just nuke the function.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
          bzrlib/tests/test_switch.py    test_switch.py-20071116011000-v5lnw7d2wkng9eux-2
    ------------------------------------------------------------
    revno: 3462.1.2
    revision-id: pqm at pqm.ubuntu.com-20080601233619-di6or8d3o26n917q
    parent: pqm at pqm.ubuntu.com-20080530221339-0l4zj40k4dknzaqw
    parent: andrew.bennetts at canonical.com-20080601230822-mzdjbbwol57spk5x
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Mon 2008-06-02 00:36:19 +0100
    message:
      Fix HPSS protocol version detection so that it doesn't unnecessarily
      	disconnect when the server correctly responds with an error code.
    modified:
      bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
      bzrlib/smart/message.py        message.py-20080222013625-ncqmh3nrxjkxab87-1
      bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
        ------------------------------------------------------------
        revno: 3461.2.2
        revision-id: andrew.bennetts at canonical.com-20080601230822-mzdjbbwol57spk5x
        parent: andrew.bennetts at canonical.com-20080530043339-gvr9z2o13cldsos6
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: smart-protocol-detection-fix
        timestamp: Mon 2008-06-02 09:08:22 +1000
        message:
          Tweak suggested by John.
        modified:
          bzrlib/smart/message.py        message.py-20080222013625-ncqmh3nrxjkxab87-1
        ------------------------------------------------------------
        revno: 3461.2.1
        revision-id: andrew.bennetts at canonical.com-20080530043339-gvr9z2o13cldsos6
        parent: pqm at pqm.ubuntu.com-20080530010236-e3x7ckdc25s57pgc
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: smart-protocol-detection-fix
        timestamp: Fri 2008-05-30 14:33:39 +1000
        message:
          Avoid unnecessary reconnections to old servers when the first HPSS is an error in the right protocol version.
        modified:
          bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
          bzrlib/smart/message.py        message.py-20080222013625-ncqmh3nrxjkxab87-1
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
    ------------------------------------------------------------
    revno: 3462.1.1
    revision-id: pqm at pqm.ubuntu.com-20080530221339-0l4zj40k4dknzaqw
    parent: pqm at pqm.ubuntu.com-20080530080302-j1jh2bwxmpd0jn2q
    parent: john at arbash-meinel.com-20080530214430-nbo0wxzbid6z22ml
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Fri 2008-05-30 23:13:39 +0100
    message:
      (jam) Change RevisionSpec_revno so that it no longer needs
      	Branch.revision_history()
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
      bzrlib/tests/test_revisionspec.py testrevisionnamespaces.py-20050711050225-8b4af89e6b1efe84
    ------------------------------------------------------------
    revno: 3460.1.4
    revision-id: john at arbash-meinel.com-20080530214430-nbo0wxzbid6z22ml
    parent: john at arbash-meinel.com-20080530134519-mpgetc0aho9c60z5
    parent: pqm at pqm.ubuntu.com-20080530080302-j1jh2bwxmpd0jn2q
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: revno_no_history
    timestamp: Fri 2008-05-30 16:44:30 -0500
    message:
      merge bzr.dev, resolve NEWS
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
      bzrlib/uncommit.py             uncommit.py-20050626215513-5ec509fa425b305c
      doc/en/user-guide/branching_a_project.txt branching_a_project.-20071122141511-0knao2lklsdsvb1q-2
    ------------------------------------------------------------
    revno: 3460.1.3
    revision-id: john at arbash-meinel.com-20080530134519-mpgetc0aho9c60z5
    parent: john at arbash-meinel.com-20080530010318-z02yqa2mz048jwb4
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: revno_no_history
    timestamp: Fri 2008-05-30 08:45:19 -0500
    message:
      NEWS
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
    ------------------------------------------------------------
    revno: 3460.1.2
    revision-id: john at arbash-meinel.com-20080530010318-z02yqa2mz048jwb4
    parent: john at arbash-meinel.com-20080530004224-1zq421goscvxm6o1
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: revno_no_history
    timestamp: Thu 2008-05-29 20:03:18 -0500
    message:
      Add a test for wants_revision_history
    modified:
      bzrlib/tests/test_revisionspec.py testrevisionnamespaces.py-20050711050225-8b4af89e6b1efe84
    ------------------------------------------------------------
    revno: 3460.1.1
    revision-id: john at arbash-meinel.com-20080530004224-1zq421goscvxm6o1
    parent: pqm at pqm.ubuntu.com-20080529210000-bycgfufmrqq63tki
    committer: John Arbash Meinel <john at arbash-meinel.com>
    branch nick: revno_no_history
    timestamp: Thu 2008-05-29 19:42:24 -0500
    message:
      Change the RevisionSpec_revno so that it doesn't need to grab the revision_history first.
    modified:
      bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
-------------- next part --------------
=== modified file 'NEWS'
--- a/NEWS	2008-06-02 16:09:09 +0000
+++ b/NEWS	2008-06-04 17:54:52 +0000
@@ -4,25 +4,21 @@
 
 .. contents::
 
-IN DEVELOPMENT
---------------
-
-This release adds a translation of some of the user documentation into Spanish.
-(Contributions of other translations would be very welcome.)
+
+bzr 1.6beta1 2008-06-02
+-----------------------
+
+
+Commands that work on the revision history such as push, pull, missing,
+uncommit and log are now substantially faster.  This release adds a
+translation of some of the user documentation into Spanish.  (Contributions of
+other translations would be very welcome.)  Bazaar 1.6beta1 adds a new network
+protocol which is used by default and which allows for more efficient transfers
+and future extensions.
+
 
   NOTES WHEN UPGRADING:
 
-  CHANGES:
-
-    * Deprecation warnings will not be suppressed when running ``bzr selftest``
-      so that developers can see if their code is using deprecated functions.
-      (John Arbash Meinel)
-
-  FEATURES:
-
-    * Adding ``-Derror`` will now display a traceback when a plugin fails to
-      load. (James Westby)
-
     * There is a new version of the network protocol used for bzr://, bzr+ssh://
       and bzr+http:// connections.  This will allow more efficient requests and
       responses, and more graceful fallback when a server is too old to
@@ -32,6 +28,17 @@
       these protocols.  Use alternatives like SFTP or upgrade those servers.
       (Andrew Bennetts, #83935)
 
+  CHANGES:
+
+    * Deprecation warnings will not be suppressed when running ``bzr selftest``
+      so that developers can see if their code is using deprecated functions.
+      (John Arbash Meinel)
+
+  FEATURES:
+
+    * Adding ``-Derror`` will now display a traceback when a plugin fails to
+      load. (James Westby)
+
   IMPROVEMENTS:
 
     * ``bzr branch/push/pull -r XXX`` now have a helper function for finding
@@ -39,6 +46,10 @@
       should make something like ``bzr branch -r -100`` in a shared, no-trees
       repository much snappier. (John Arbash Meinel)
 
+    * ``bzr log --short -r X..Y`` no longer needs to access the full revision
+      history. This makes it noticeably faster when logging the last few
+      revisions. (John Arbash Meinel)
+
     * ``bzr ls`` now accepts ``-V`` as an alias for ``--versioned``. 
       (Jerad Cramp, #165086)
 
@@ -99,6 +110,9 @@
       them.
       (Vincent Ladeuil, #229076)
 
+    * The "Unable to obtain lock" error message now also suggests using
+      ``bzr break-lock`` to fix it.  (Martin Albisetti, #139202)
+
     * Treat an encoding of '' as ascii; this can happen when bzr is run
       under vim on Mac OS X.
       (Neil Martinsen-Burrell)
@@ -125,6 +139,11 @@
 
   INTERNALS:
 
+    * ``Branch.missing_revisions`` has been deprecated. Similar functionality
+      can be obtained using ``bzrlib.missing.find_unmerged``. The api was
+      fairly broken, and the function was unused, so we are getting rid of it.
+      (John Arbash Meinel)
+
   API CHANGES:
 
     * ``Branch.abspath`` is deprecated; use the Tree or Transport 
@@ -156,6 +175,11 @@
       ``bzrlib.revision``  deprecated before bzrlib 1.5 have been removed.
       (Robert Collins)
 
+    * ``RevisionSpec.wants_revision_history`` can be set to False for a given
+      ``RevisionSpec``. This will disable the existing behavior of passing in
+      the full revision history to ``self._match_on``. Useful for specs that
+      don't actually need access to the full history. (John Arbash Meinel)
+
     * The constructors of ``SmartClientMedium`` and its subclasses now require a
       ``base`` parameter.  ``SmartClientMedium`` implementations now also need
       to provide a ``remote_path_from_transport`` method.  (Andrew Bennetts)
@@ -220,7 +244,7 @@
   IMPROVEMENTS:
 
     * Diff now handles revision specs like "branch:" and "submit:" more
-      efficiently.  (Aaron Bentley)
+      efficiently.  (Aaron Bentley, #202928)
 
     * More friendly error given when attempt to start the smart server
       on an address already in use. (Andrea Corbellini, #200575)
@@ -352,7 +376,7 @@
     * The Python ``assert`` statement is no longer used in Bazaar source, and 
       a test checks this.  (Martin Pool)
 
-  API BREAKS:
+  API CHANGES:
 
     * ``bzrlib.status.show_pending_merges`` requires the repository to be
       locked by the caller. Callers should have been doing it anyway, but it
@@ -6183,3 +6207,6 @@
 
     * Storage of local versions: init, add, remove, rm, info, log,
       diff, status, etc.
+
+..
+   vim: tw=74 ft=rst ff=unix

=== modified file 'bzrlib/__init__.py'
--- a/bzrlib/__init__.py	2008-05-16 21:00:25 +0000
+++ b/bzrlib/__init__.py	2008-06-03 06:55:59 +0000
@@ -41,7 +41,7 @@
 # Python version 2.0 is (2, 0, 0, 'final', 0)."  Additionally we use a
 # releaselevel of 'dev' for unreleased under-development code.
 
-version_info = (1, 6, 0, 'dev', 0)
+version_info = (1, 6, 0, 'beta', 2)
 
 
 # API compatibility version: bzrlib is currently API compatible with 0.18.

=== modified file 'bzrlib/branch.py'
--- a/bzrlib/branch.py	2008-05-29 20:17:37 +0000
+++ b/bzrlib/branch.py	2008-06-04 17:42:15 +0000
@@ -425,6 +425,7 @@
         else:
             return (0, _mod_revision.NULL_REVISION)
 
+    @deprecated_method(deprecated_in((1, 6, 0)))
     def missing_revisions(self, other, stop_revision=None):
         """Return a list of new revisions that would perfectly fit.
         
@@ -447,6 +448,7 @@
                 raise errors.NoSuchRevision(self, stop_revision)
         return other_history[self_len:stop_revision]
 
+    @needs_write_lock
     def update_revisions(self, other, stop_revision=None, overwrite=False,
                          graph=None):
         """Pull in new perfect-fit revisions.
@@ -459,7 +461,51 @@
             information. This can be None.
         :return: None
         """
-        raise NotImplementedError(self.update_revisions)
+        other.lock_read()
+        try:
+            other_revno, other_last_revision = other.last_revision_info()
+            stop_revno = None # unknown
+            if stop_revision is None:
+                stop_revision = other_last_revision
+                if _mod_revision.is_null(stop_revision):
+                    # if there are no commits, we're done.
+                    return
+                stop_revno = other_revno
+
+            # what's the current last revision, before we fetch [and change it
+            # possibly]
+            last_rev = _mod_revision.ensure_null(self.last_revision())
+            # we fetch here so that we don't process data twice in the common
+            # case of having something to pull, and so that the check for 
+            # already merged can operate on the just fetched graph, which will
+            # be cached in memory.
+            self.fetch(other, stop_revision)
+            # Check to see if one is an ancestor of the other
+            if not overwrite:
+                if graph is None:
+                    graph = self.repository.get_graph()
+                heads = graph.heads([stop_revision, last_rev])
+                if heads == set([last_rev]):
+                    # The current revision is a decendent of the target,
+                    # nothing to do
+                    return
+                elif heads == set([stop_revision, last_rev]):
+                    # These branches have diverged
+                    raise errors.DivergedBranches(self, other)
+                elif heads != set([stop_revision]):
+                    raise AssertionError("invalid heads: %r" % heads)
+            if stop_revno is None:
+                if graph is None:
+                    graph = self.repository.get_graph()
+                this_revno, this_last_revision = self.last_revision_info()
+                stop_revno = graph.find_distance_to_null(stop_revision,
+                                [(other_last_revision, other_revno),
+                                 (this_last_revision, this_revno)])
+            self.set_last_revision_info(stop_revno, stop_revision)
+        finally:
+            other.unlock()
+
+
 
     def revision_id_to_revno(self, revision_id):
         """Given a revision id, return its revno"""
@@ -918,7 +964,7 @@
             for (filename, content) in utf8_files:
                 branch_transport.put_bytes(
                     filename, content,
-                    mode=control_files._file_mode)
+                    mode=a_bzrdir._get_file_mode())
         finally:
             control_files.unlock()
         return self.open(a_bzrdir, _found=True)
@@ -1412,7 +1458,7 @@
         It is intended to be called by BzrBranch5.set_revision_history."""
         self._transport.put_bytes(
             'revision-history', '\n'.join(history),
-            mode=self.control_files._file_mode)
+            mode=self.bzrdir._get_file_mode())
 
     @needs_write_lock
     def set_revision_history(self, rev_history):
@@ -1505,54 +1551,6 @@
         self.set_revision_history(self._lefthand_history(revision_id,
             last_rev, other_branch))
 
-    @needs_write_lock
-    def update_revisions(self, other, stop_revision=None, overwrite=False,
-                         graph=None):
-        """See Branch.update_revisions."""
-        other.lock_read()
-        try:
-            other_revno, other_last_revision = other.last_revision_info()
-            stop_revno = None # unknown
-            if stop_revision is None:
-                stop_revision = other_last_revision
-                if _mod_revision.is_null(stop_revision):
-                    # if there are no commits, we're done.
-                    return
-                stop_revno = other_revno
-
-            # what's the current last revision, before we fetch [and change it
-            # possibly]
-            last_rev = _mod_revision.ensure_null(self.last_revision())
-            # we fetch here so that we don't process data twice in the common
-            # case of having something to pull, and so that the check for 
-            # already merged can operate on the just fetched graph, which will
-            # be cached in memory.
-            self.fetch(other, stop_revision)
-            # Check to see if one is an ancestor of the other
-            if not overwrite:
-                if graph is None:
-                    graph = self.repository.get_graph()
-                heads = graph.heads([stop_revision, last_rev])
-                if heads == set([last_rev]):
-                    # The current revision is a decendent of the target,
-                    # nothing to do
-                    return
-                elif heads == set([stop_revision, last_rev]):
-                    # These branches have diverged
-                    raise errors.DivergedBranches(self, other)
-                elif heads != set([stop_revision]):
-                    raise AssertionError("invalid heads: %r" % heads)
-            if stop_revno is None:
-                if graph is None:
-                    graph = self.repository.get_graph()
-                this_revno, this_last_revision = self.last_revision_info()
-                stop_revno = graph.find_distance_to_null(stop_revision,
-                                [(other_last_revision, other_revno),
-                                 (this_last_revision, this_revno)])
-            self.set_last_revision_info(stop_revno, stop_revision)
-        finally:
-            other.unlock()
-
     def basis_tree(self):
         """See Branch.basis_tree."""
         return self.repository.revision_tree(self.last_revision())
@@ -1734,7 +1732,7 @@
             self._transport.delete('parent')
         else:
             self._transport.put_bytes('parent', url + '\n',
-                mode=self.control_files._file_mode)
+                mode=self.bzrdir._get_file_mode())
 
 
 class BzrBranch5(BzrBranch):
@@ -1913,7 +1911,7 @@
         revision_id = _mod_revision.ensure_null(revision_id)
         out_string = '%d %s\n' % (revno, revision_id)
         self._transport.put_bytes('last-revision', out_string,
-            mode=self.control_files._file_mode)
+            mode=self.bzrdir._get_file_mode())
 
     @needs_write_lock
     def set_last_revision_info(self, revno, revision_id):
@@ -2224,7 +2222,7 @@
         # Copying done; now update target format
         new_branch._transport.put_bytes('format',
             format.get_format_string(),
-            mode=new_branch.control_files._file_mode)
+            mode=new_branch.bzrdir._get_file_mode())
 
         # Clean up old files
         new_branch._transport.delete('revision-history')

=== modified file 'bzrlib/lockdir.py'
--- a/bzrlib/lockdir.py	2008-04-24 07:22:53 +0000
+++ b/bzrlib/lockdir.py	2008-05-21 01:38:52 +0000
@@ -506,15 +506,20 @@
                 if deadline_str is None:
                     deadline_str = time.strftime('%H:%M:%S',
                                                  time.localtime(deadline))
+                lock_url = self.transport.abspath(self.path)
                 self._report_function('%s %s\n'
                                       '%s\n' # held by
                                       '%s\n' # locked ... ago
-                                      'Will continue to try until %s\n',
+                                      'Will continue to try until %s, unless '
+                                      'you press Ctrl-C\n'
+                                      'If you\'re sure that it\'s not being '
+                                      'modified, use bzr break-lock %s',
                                       start,
                                       formatted_info[0],
                                       formatted_info[1],
                                       formatted_info[2],
-                                      deadline_str)
+                                      deadline_str,
+                                      lock_url)
 
             if (max_attempts is not None) and (attempt_count >= max_attempts):
                 self._trace("exceeded %d attempts")

=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py	2008-05-29 20:17:37 +0000
+++ b/bzrlib/remote.py	2008-06-04 07:29:35 +0000
@@ -1258,12 +1258,12 @@
         self._lock_count = 0
         self._leave_lock = False
 
-    def _ensure_real_transport(self):
+    def _get_real_transport(self):
         # if we try vfs access, return the real branch's vfs transport
         self._ensure_real()
         return self._real_branch._transport
 
-    _transport = property(_ensure_real_transport)
+    _transport = property(_get_real_transport)
 
     def __str__(self):
         return "%s(%s)" % (self.__class__.__name__, self.base)

=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2008-05-29 12:27:24 +0000
+++ b/bzrlib/repository.py	2008-06-04 07:29:35 +0000
@@ -1975,7 +1975,7 @@
                 pass
         else:
             self._transport.put_bytes('no-working-trees', '',
-                mode=self.control_files._file_mode)
+                mode=self.bzrdir._get_file_mode())
     
     def make_working_trees(self):
         """Returns the policy for making working trees on new branches."""

=== modified file 'bzrlib/revisionspec.py'
--- a/bzrlib/revisionspec.py	2008-05-08 04:33:38 +0000
+++ b/bzrlib/revisionspec.py	2008-05-30 00:42:24 +0000
@@ -135,6 +135,7 @@
     """
 
     prefix = None
+    wants_revision_history = True
 
     def __new__(cls, spec, _internal=False):
         if _internal:
@@ -215,7 +216,10 @@
 
     def in_history(self, branch):
         if branch:
-            revs = branch.revision_history()
+            if self.wants_revision_history:
+                revs = branch.revision_history()
+            else:
+                revs = None
         else:
             # this should never trigger.
             # TODO: make it a deprecated code path. RBC 20060928
@@ -292,6 +296,7 @@
                                    your history is very long.
     """
     prefix = 'revno:'
+    wants_revision_history = False
 
     def _match_on(self, branch, revs):
         """Lookup a revision by revision number"""

=== modified file 'bzrlib/smart/client.py'
--- a/bzrlib/smart/client.py	2008-05-20 00:42:19 +0000
+++ b/bzrlib/smart/client.py	2008-05-30 04:33:39 +0000
@@ -76,6 +76,11 @@
                         % (protocol_version,))
                     self._medium.disconnect()
                     continue
+                except errors.ErrorFromSmartServer:
+                    # If we received an error reply from the server, then it
+                    # must be ok with this protocol version.
+                    self._medium._protocol_version = protocol_version
+                    raise
                 else:
                     self._medium._protocol_version = protocol_version
                     return response_tuple, response_handler

=== modified file 'bzrlib/smart/message.py'
--- a/bzrlib/smart/message.py	2008-05-14 07:35:27 +0000
+++ b/bzrlib/smart/message.py	2008-06-01 23:08:22 +0000
@@ -237,6 +237,11 @@
         bytes = self._medium_request.read_bytes(next_read_size)
         if bytes == '':
             # end of file encountered reading from server
+            if 'hpss' in debug.debug_flags:
+                mutter(
+                    'decoder state: buf[:10]=%r, state_accept=%s',
+                    self._protocol_decoder._in_buffer[:10],
+                    self._protocol_decoder.state_accept.__name__)
             raise errors.ConnectionReset(
                 "please check connectivity and permissions",
                 "(and try -Dhpss if further diagnosis is required)")

=== modified file 'bzrlib/tests/branch_implementations/test_branch.py'
--- a/bzrlib/tests/branch_implementations/test_branch.py	2008-05-12 02:48:08 +0000
+++ b/bzrlib/tests/branch_implementations/test_branch.py	2008-05-28 22:30:48 +0000
@@ -40,6 +40,7 @@
                            )
 from bzrlib.osutils import getcwd
 import bzrlib.revision
+from bzrlib.symbol_versioning import deprecated_in
 from bzrlib.tests import TestCase, TestCaseWithTransport, TestSkipped
 from bzrlib.tests.branch_implementations import TestCaseWithBranch
 from bzrlib.tests.http_server import HttpServer
@@ -304,6 +305,36 @@
         self.assertEqual(repo.get_signature_text('A'),
                          d2.open_repository().get_signature_text('A'))
 
+    def test_missing_revisions(self):
+        t1 = self.make_branch_and_tree('b1')
+        rev1 = t1.commit('one')
+        t2 = t1.bzrdir.sprout('b2').open_workingtree()
+        rev2 = t1.commit('two')
+        rev3 = t1.commit('three')
+
+        self.assertEqual([rev2, rev3],
+            self.applyDeprecated(deprecated_in((1, 6, 0)),
+            t2.branch.missing_revisions, t1.branch))
+
+        self.assertEqual([],
+            self.applyDeprecated(deprecated_in((1, 6, 0)),
+            t2.branch.missing_revisions, t1.branch, stop_revision=1))
+        self.assertEqual([rev2],
+            self.applyDeprecated(deprecated_in((1, 6, 0)),
+            t2.branch.missing_revisions, t1.branch, stop_revision=2))
+        self.assertEqual([rev2, rev3],
+            self.applyDeprecated(deprecated_in((1, 6, 0)),
+            t2.branch.missing_revisions, t1.branch, stop_revision=3))
+
+        self.assertRaises(errors.NoSuchRevision,
+            self.applyDeprecated, deprecated_in((1, 6, 0)),
+            t2.branch.missing_revisions, t1.branch, stop_revision=4)
+
+        rev4 = t2.commit('four')
+        self.assertRaises(errors.DivergedBranches,
+            self.applyDeprecated, deprecated_in((1, 6, 0)),
+            t2.branch.missing_revisions, t1.branch)
+
     def test_nicks(self):
         """Test explicit and implicit branch nicknames.
         

=== modified file 'bzrlib/tests/test_branch.py'
--- a/bzrlib/tests/test_branch.py	2008-04-09 03:09:58 +0000
+++ b/bzrlib/tests/test_branch.py	2008-05-21 15:45:56 +0000
@@ -53,6 +53,7 @@
 from bzrlib.tests import TestCase, TestCaseWithTransport
 from bzrlib.transport import get_transport
 
+
 class TestDefaultFormat(TestCase):
 
     def test_default_format(self):
@@ -294,6 +295,7 @@
         self.assertEqual(warnings[0], 'Value "new" is masked by "old" from '
                          'locations.conf')
 
+
 class TestBranchReference(TestCaseWithTransport):
     """Tests for the branch reference facility."""
 

=== modified file 'bzrlib/tests/test_lockdir.py'
--- a/bzrlib/tests/test_lockdir.py	2007-12-17 15:17:28 +0000
+++ b/bzrlib/tests/test_lockdir.py	2008-05-21 02:13:43 +0000
@@ -190,9 +190,13 @@
             lf1.unlock()
         lock_base = lf2.transport.abspath(lf2.path)
         self.assertEqual(1, len(self._logged_reports))
+        lock_url = lf2.transport.abspath(lf2.path)
         self.assertEqual('%s %s\n'
                          '%s\n%s\n'
-                         'Will continue to try until %s\n',
+                         'Will continue to try until %s, unless '
+                         'you press Ctrl-C\n'
+                         'If you\'re sure that it\'s not being '
+                         'modified, use bzr break-lock %s',
                          self._logged_reports[0][0])
         args = self._logged_reports[0][1]
         self.assertEqual('Unable to obtain', args[0])
@@ -406,10 +410,13 @@
         # There should be 2 reports, because the lock changed
         lock_base = lf2.transport.abspath(lf2.path)
         self.assertEqual(2, len(self._logged_reports))
-
+        lock_url = lf2.transport.abspath(lf2.path)
         self.assertEqual('%s %s\n'
                          '%s\n%s\n'
-                         'Will continue to try until %s\n',
+                         'Will continue to try until %s, unless '
+                         'you press Ctrl-C\n'
+                         'If you\'re sure that it\'s not being '
+                         'modified, use bzr break-lock %s',
                          self._logged_reports[0][0])
         args = self._logged_reports[0][1]
         self.assertEqual('Unable to obtain', args[0])
@@ -421,7 +428,10 @@
 
         self.assertEqual('%s %s\n'
                          '%s\n%s\n'
-                         'Will continue to try until %s\n',
+                         'Will continue to try until %s, unless '
+                         'you press Ctrl-C\n'
+                         'If you\'re sure that it\'s not being '
+                         'modified, use bzr break-lock %s',
                          self._logged_reports[1][0])
         args = self._logged_reports[1][1]
         self.assertEqual('Lock owner changed for', args[0])

=== modified file 'bzrlib/tests/test_revisionspec.py'
--- a/bzrlib/tests/test_revisionspec.py	2008-03-29 21:16:20 +0000
+++ b/bzrlib/tests/test_revisionspec.py	2008-05-30 01:03:18 +0000
@@ -90,6 +90,35 @@
                          spec.as_revision_id(self.tree.branch))
 
 
+class RevisionSpecMatchOnTrap(RevisionSpec):
+
+    def _match_on(self, branch, revs):
+        self.last_call = (branch, revs)
+        return super(RevisionSpecMatchOnTrap, self)._match_on(branch, revs)
+
+
+class TestRevisionSpecBase(TestRevisionSpec):
+
+    def test_wants_revision_history(self):
+        # If wants_revision_history = True, then _match_on should get the
+        # branch revision history
+        spec = RevisionSpecMatchOnTrap('foo', _internal=True)
+        spec.in_history(self.tree.branch)
+
+        self.assertEqual((self.tree.branch, ['r1' ,'r2']),
+                         spec.last_call)
+
+    def test_wants_no_revision_history(self):
+        # If wants_revision_history = False, then _match_on should get None for
+        # the branch revision history
+        spec = RevisionSpecMatchOnTrap('foo', _internal=True)
+        spec.wants_revision_history = False
+        spec.in_history(self.tree.branch)
+
+        self.assertEqual((self.tree.branch, None), spec.last_call)
+
+
+
 class TestOddRevisionSpec(TestRevisionSpec):
     """Test things that aren't normally thought of as revision specs"""
 

=== modified file 'bzrlib/tests/test_smart_transport.py'
--- a/bzrlib/tests/test_smart_transport.py	2008-05-23 07:02:37 +0000
+++ b/bzrlib/tests/test_smart_transport.py	2008-05-30 04:33:39 +0000
@@ -2590,6 +2590,7 @@
 
     def __init__(self):
         self.calls = []
+        self._medium = 'dummy medium'
 
     def accept_bytes(self, bytes):
         self.calls.append('accept_bytes')
@@ -2924,7 +2925,40 @@
             errors.SmartProtocolError,
             smart_client.call, 'method-name', 'arg 1', 'arg 2')
         self.assertEqual([], medium._expected_events)
+
+    def test_first_response_is_error(self):
+        """If the server replies with an error, then the version detection
+        should be complete.
         
+        This test is very similar to test_version_two_server, but catches a bug
+        we had in the case where the first reply was an error response.
+        """
+        medium = MockMedium()
+        smart_client = client._SmartClient(medium, headers={})
+        message_start = protocol.MESSAGE_VERSION_THREE + '\x00\x00\x00\x02de'
+        # Issue a request that gets an error reply in a non-default protocol
+        # version.
+        medium.expect_request(
+            message_start +
+            's\x00\x00\x00\x10l11:method-nameee',
+            'bzr response 2\nfailed\n\n')
+        medium.expect_disconnect()
+        medium.expect_request(
+            'bzr request 2\nmethod-name\n',
+            'bzr response 2\nfailed\nFooBarError\n')
+        err = self.assertRaises(
+            errors.ErrorFromSmartServer,
+            smart_client.call, 'method-name')
+        self.assertEqual(('FooBarError',), err.error_tuple)
+        # Now the medium should have remembered the protocol version, so
+        # subsequent requests will use the remembered version immediately.
+        medium.expect_request(
+            'bzr request 2\nmethod-name\n',
+            'bzr response 2\nsuccess\nresponse value\n')
+        result = smart_client.call('method-name')
+        self.assertEqual(('response value',), result)
+        self.assertEqual([], medium._expected_events)
+
 
 class Test_SmartClient(tests.TestCase):
 

=== modified file 'bzrlib/tests/test_switch.py'
--- a/bzrlib/tests/test_switch.py	2007-12-07 05:31:54 +0000
+++ b/bzrlib/tests/test_switch.py	2008-05-21 15:42:47 +0000
@@ -130,7 +130,5 @@
         self.failIfExists('checkout/file-3')
         self.failUnlessExists('checkout/file-4')
         # Check that the checkout is a true mirror of the bound branch
-        missing_in_checkout = checkout.branch.missing_revisions(to_branch)
-        self.assertEqual([], missing_in_checkout)
-        missing_in_remote = to_branch.missing_revisions(checkout.branch)
-        self.assertEqual([], missing_in_remote)
+        self.assertEqual(to_branch.last_revision_info(),
+                         checkout.branch.last_revision_info())

=== modified file 'bzrlib/workingtree_4.py'
--- a/bzrlib/workingtree_4.py	2008-06-02 16:09:09 +0000
+++ b/bzrlib/workingtree_4.py	2008-06-04 17:54:52 +0000
@@ -1322,7 +1322,7 @@
         control_files.create_lock()
         control_files.lock_write()
         transport.put_bytes('format', self.get_format_string(),
-            mode=control_files._file_mode)
+            mode=a_bzrdir._get_file_mode())
         if from_branch is not None:
             branch = from_branch
         else:
@@ -2550,4 +2550,4 @@
         """Change the format marker."""
         tree._transport.put_bytes('format',
             self.target_format.get_format_string(),
-            mode=tree._control_files._file_mode)
+            mode=tree.bzrdir._get_file_mode())



More information about the bazaar-commits mailing list