Rev 3605: Merge to resolve conflicts in NEWS. in http://people.ubuntu.com/~robertc/baz2.0/integration

Robert Collins robertc at robertcollins.net
Fri Aug 8 06:44:55 BST 2008


At http://people.ubuntu.com/~robertc/baz2.0/integration

------------------------------------------------------------
revno: 3605
revision-id: robertc at robertcollins.net-20080808054444-s4er0rqgs07nbcpv
parent: robertc at robertcollins.net-20080805060140-ckkbituih3srpm06
parent: pqm at pqm.ubuntu.com-20080807005717-qxnuq9je71bt9tcs
committer: Robert Collins <robertc at robertcollins.net>
branch nick: integration
timestamp: Fri 2008-08-08 15:44:44 +1000
message:
  Merge to resolve conflicts in NEWS.
added:
  bzrlib/tests/test_upgrade_stacked.py test_upgrade_stacked-20080804072225-jd13yami19nskns5-1
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzr                            bzr.py-20050313053754-5485f144c7006fa6
  bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
  bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
  bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
  bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
  bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
  bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
  bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
  bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
  bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
  bzrlib/upgrade.py              history2weaves.py-20050818063535-e7d319791c19a8b2
    ------------------------------------------------------------
    revno: 3603.2.10
    revision-id: pqm at pqm.ubuntu.com-20080807005717-qxnuq9je71bt9tcs
    parent: pqm at pqm.ubuntu.com-20080806224913-zg129xmi6x8045k3
    parent: andrew.bennetts at canonical.com-20080807002843-jchnn2ffak6ushpb
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Thu 2008-08-07 01:57:17 +0100
    message:
      Make 'bzr upgrade' work over HPSS. (Andrew Bennetts)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
      bzrlib/upgrade.py              history2weaves.py-20050818063535-e7d319791c19a8b2
        ------------------------------------------------------------
        revno: 3577.4.3
        revision-id: andrew.bennetts at canonical.com-20080807002843-jchnn2ffak6ushpb
        parent: andrew.bennetts at canonical.com-20080807002538-mtl1fcgy2fdabha4
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: upgrade-over-hpss
        timestamp: Thu 2008-08-07 10:28:43 +1000
        message:
          Add NEWS entry.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 3577.4.2
        revision-id: andrew.bennetts at canonical.com-20080807002538-mtl1fcgy2fdabha4
        parent: andrew.bennetts at canonical.com-20080725031211-3oirb20ag3xk9i59
        parent: pqm at pqm.ubuntu.com-20080806224913-zg129xmi6x8045k3
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: upgrade-over-hpss
        timestamp: Thu 2008-08-07 10:25:38 +1000
        message:
          Merge from bzr.dev.
        added:
          bzrlib/tests/test_pack_repository.py test_pack_repository-20080801043947-eaw0e6h2gu75kwmy-1
          bzrlib/tests/test_upgrade_stacked.py test_upgrade_stacked-20080804072225-jd13yami19nskns5-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzr                            bzr.py-20050313053754-5485f144c7006fa6
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
          bzrlib/_dirstate_helpers_py.py _dirstate_helpers_py-20070710145033-90nz6cqglsk150jy-1
          bzrlib/_patiencediff_py.py     cdvdifflib.py-20051106064558-f8f8097fbf0db4e4
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/branchbuilder.py        branchbuilder.py-20070427022007-zlxpqz2lannhk6y8-1
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/check.py                check.py-20050309040759-f3a679400c06bcc1
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/export/dir_exporter.py  dir_exporter.py-20051114235828-b51397f56bc7b117
          bzrlib/export/tar_exporter.py  tar_exporter.py-20051114235828-1f6349a2f090a5d0
          bzrlib/export/zip_exporter.py  zip_exporter.py-20051114235828-8f57f954fba6497e
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/merge_directive.py      merge_directive.py-20070228184838-ja62280spt1g7f4x-1
          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/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
          bzrlib/tests/blackbox/test_check.py test_check.py-20071024054728-mn44rt3z5hnqcbke-1
          bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
          bzrlib/tests/blackbox/test_export.py test_export.py-20051229024010-e6c26658e460fb1c
          bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
          bzrlib/tests/blackbox/test_status.py teststatus.py-20050712014354-508855eb9f29f7dc
          bzrlib/tests/branch_implementations/test_hooks.py test_hooks.py-20070129154855-blhpwxmvjs07waei-1
          bzrlib/tests/branch_implementations/test_stacking.py test_stacking.py-20080214020755-msjlkb7urobwly0f-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_branchbuilder.py test_branchbuilder.p-20070427022007-zlxpqz2lannhk6y8-2
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_errors.py    test_errors.py-20060210110251-41aba2deddf936a8
          bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
          bzrlib/tests/test_memorytree.py test_memorytree.py-20060906023413-4wlkalbdpsxi2r4y-3
          bzrlib/tests/test_merge_directive.py test_merge_directive-20070228184838-ja62280spt1g7f4x-2
          bzrlib/tests/test_options.py   testoptions.py-20051014093702-96457cfc86319a8f
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
          bzrlib/tests/test_tree.py      test_tree.py-20060724065232-khgrr0vvmt6ih0mi-1
          bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
          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/transform.py            transform.py-20060105172343-dd99e54394d91687
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/upgrade.py              history2weaves.py-20050818063535-e7d319791c19a8b2
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
          tools/doc_generate/autodoc_rstx.py autodoc_rstx.py-20060420024836-3e0d4a526452193c
        ------------------------------------------------------------
        revno: 3577.4.1
        revision-id: andrew.bennetts at canonical.com-20080725031211-3oirb20ag3xk9i59
        parent: pqm at pqm.ubuntu.com-20080724061047-yrvo5cmeik38kibz
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: upgrade-over-hpss
        timestamp: Fri 2008-07-25 13:12:11 +1000
        message:
          Make 'bzr upgrade' work over HPSS.
        modified:
          bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
          bzrlib/upgrade.py              history2weaves.py-20050818063535-e7d319791c19a8b2
    ------------------------------------------------------------
    revno: 3603.2.9
    revision-id: pqm at pqm.ubuntu.com-20080806224913-zg129xmi6x8045k3
    parent: pqm at pqm.ubuntu.com-20080806215733-qiem34zrdhgcq8ap
    parent: andrew.bennetts at canonical.com-20080805143514-rmx7hxd3mt40fb44
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Wed 2008-08-06 23:49:13 +0100
    message:
      Remove duplicated class definitions and remove unused imports from
      	pack_repo.py. (Andrew Bennetts)
    modified:
      bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
        ------------------------------------------------------------
        revno: 3603.7.1
        revision-id: andrew.bennetts at canonical.com-20080805143514-rmx7hxd3mt40fb44
        parent: pqm at pqm.ubuntu.com-20080805011407-wmq7130znc0e6c4x
        committer: Andrew Bennetts <andrew.bennetts at canonical.com>
        branch nick: dupe-code
        timestamp: Wed 2008-08-06 00:35:14 +1000
        message:
          Remove duplicated class definitions, remove unused imports.
        modified:
          bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
    ------------------------------------------------------------
    revno: 3603.2.8
    revision-id: pqm at pqm.ubuntu.com-20080806215733-qiem34zrdhgcq8ap
    parent: pqm at pqm.ubuntu.com-20080806212834-ttevmjkwyafz4qe0
    parent: benjamin.peterson at usfamily.net-20080722143227-88mqht2ya0ogb104
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Wed 2008-08-06 22:57:33 +0100
    message:
      (Benjamin Peterson) Document how to rename tags
    modified:
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
        ------------------------------------------------------------
        revno: 3566.2.2
        revision-id: benjamin.peterson at usfamily.net-20080722143227-88mqht2ya0ogb104
        parent: benjamin.peterson at usfamily.net-20080721172009-8nrvntbcr7r2nzlk
        committer: Benjamin Peterson <benjamin.peterson at usfamily.net>
        branch nick: tag-rename-documentation
        timestamp: Tue 2008-07-22 09:32:27 -0500
        message:
          fix markup
        modified:
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
        ------------------------------------------------------------
        revno: 3566.2.1
        revision-id: benjamin.peterson at usfamily.net-20080721172009-8nrvntbcr7r2nzlk
        parent: pqm at pqm.ubuntu.com-20080721092720-z0bvnt4ljysbqjis
        committer: Benjamin Peterson <benjamin.peterson at usfamily.net>
        branch nick: tag-rename-document
        timestamp: Mon 2008-07-21 12:20:09 -0500
        message:
          document how the rename tags
        modified:
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
    ------------------------------------------------------------
    revno: 3603.2.7
    revision-id: pqm at pqm.ubuntu.com-20080806212834-ttevmjkwyafz4qe0
    parent: pqm at pqm.ubuntu.com-20080806205754-tyo3u7h84tgr0h9k
    parent: john at arbash-meinel.com-20080806203424-6b9o4ijtzupf0bjd
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Wed 2008-08-06 22:28:34 +0100
    message:
      (Christophe Troestler) Add another case for detecting for FileExists
      	(bug #123475)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
        ------------------------------------------------------------
        revno: 3603.6.1
        revision-id: john at arbash-meinel.com-20080806203424-6b9o4ijtzupf0bjd
        parent: pqm at pqm.ubuntu.com-20080806085554-9e0l5crd6yv0kxy8
        parent: christophe.troestler at umh.ac.be-20080718201920-lvt8l822l4v4qs4z
        committer: John Arbash Meinel <john at arbash-meinel.com>
        branch nick: push-sftp
        timestamp: Wed 2008-08-06 15:34:24 -0500
        message:
          Merge Christophe Troestler's fix for SFTP IO Error translation.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
        ------------------------------------------------------------
        revno: 3565.4.2
        revision-id: christophe.troestler at umh.ac.be-20080718201920-lvt8l822l4v4qs4z
        parent: christophe.troestler at umh.ac.be-20080718195108-0kgfigpaqipeq71e
        committer: Christophe Troestler <Christophe.Troestler at umh.ac.be>
        branch nick: push-sftp
        timestamp: Fri 2008-07-18 22:19:20 +0200
        message:
          [Bug #123475] Added news entry.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 3565.4.1
        revision-id: christophe.troestler at umh.ac.be-20080718195108-0kgfigpaqipeq71e
        parent: pqm at pqm.ubuntu.com-20080718100017-segv2csk7ux2xs9p
        committer: Christophe Troestler <Christophe.Troestler at umh.ac.be>
        branch nick: push-sftp
        timestamp: Fri 2008-07-18 21:51:08 +0200
        message:
          [Bug #123475] SFTPTransport._translate_io_exception: better detection
          of the `FileExists' case.
        modified:
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
    ------------------------------------------------------------
    revno: 3603.2.6
    revision-id: pqm at pqm.ubuntu.com-20080806205754-tyo3u7h84tgr0h9k
    parent: pqm at pqm.ubuntu.com-20080806085554-9e0l5crd6yv0kxy8
    parent: jw+debian at jameswestby.net-20080802161123-70e89xwj0sccql1p
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Wed 2008-08-06 21:57:54 +0100
    message:
      (James Westby) Make TreeTransform.apply() update the WT for kind
      	changes.
    modified:
      bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
        ------------------------------------------------------------
        revno: 3590.3.5
        revision-id: jw+debian at jameswestby.net-20080802161123-70e89xwj0sccql1p
        parent: jw+debian at jameswestby.net-20080801161059-xbtyoclmjhaf13qz
        committer: James Westby <jw+debian at jameswestby.net>
        branch nick: bzr.dev.transform
        timestamp: Sat 2008-08-02 17:11:23 +0100
        message:
          Use HardlinkFeature for the hardlink test.
        modified:
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
        ------------------------------------------------------------
        revno: 3590.3.4
        revision-id: jw+debian at jameswestby.net-20080801161059-xbtyoclmjhaf13qz
        parent: jw+debian at jameswestby.net-20080731193813-z0u37e3l0j6u0xyj
        committer: James Westby <jw+debian at jameswestby.net>
        branch nick: bzr.dev.transform
        timestamp: Fri 2008-08-01 17:10:59 +0100
        message:
          Add a test for creating hardlinks as well.
          
          Also, don't keep state, but calculate all of the kind changes
          at apply time.
        modified:
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
        ------------------------------------------------------------
        revno: 3590.3.3
        revision-id: jw+debian at jameswestby.net-20080731193813-z0u37e3l0j6u0xyj
        parent: jw+debian at jameswestby.net-20080731172238-ba5br3gjk2mjkarb
        committer: James Westby <jw+debian at jameswestby.net>
        branch nick: bzr.dev.transform
        timestamp: Thu 2008-07-31 20:38:13 +0100
        message:
          Make ->file changes work as well.
        modified:
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
        ------------------------------------------------------------
        revno: 3590.3.2
        revision-id: jw+debian at jameswestby.net-20080731172238-ba5br3gjk2mjkarb
        parent: jw+debian at jameswestby.net-20080731164241-itsqths2azzc655b
        committer: James Westby <jw+debian at jameswestby.net>
        branch nick: bzr.dev.transform
        timestamp: Thu 2008-07-31 18:22:38 +0100
        message:
          Handle ->symlink changes as well.
        modified:
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
        ------------------------------------------------------------
        revno: 3590.3.1
        revision-id: jw+debian at jameswestby.net-20080731164241-itsqths2azzc655b
        parent: pqm at pqm.ubuntu.com-20080729170343-hy20k9g6euzsz04s
        committer: James Westby <jw+debian at jameswestby.net>
        branch nick: bzr.dev
        timestamp: Thu 2008-07-31 17:42:41 +0100
        message:
          Make TreeTransform update the inventory with new kind information.
          
          If an entry simply changes kind in a TreeTransform it wouldn't previously
          be updated in the inventory, leading to a dirstate that didn't match what
          was on disk.
          
          This change makes TreeTransform keep track of kind changes and add an
          inventory_delta entry to change the kind of the entry.
          
          It is only implemented for ->directory changes currently.
        modified:
          bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
    ------------------------------------------------------------
    revno: 3603.2.5
    revision-id: pqm at pqm.ubuntu.com-20080806085554-9e0l5crd6yv0kxy8
    parent: pqm at pqm.ubuntu.com-20080806073717-dz0d9gglgf8r9996
    parent: mbp at sourcefrog.net-20080806082343-6nh1t7rjjpk5dyps
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Wed 2008-08-06 09:55:54 +0100
    message:
      (mbp) start 1.7
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzr                            bzr.py-20050313053754-5485f144c7006fa6
      bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
        ------------------------------------------------------------
        revno: 3603.5.1
        revision-id: mbp at sourcefrog.net-20080806082343-6nh1t7rjjpk5dyps
        parent: pqm at pqm.ubuntu.com-20080806073717-dz0d9gglgf8r9996
        parent: pqm at pqm.ubuntu.com-20080806081305-xvxw50wzvr47315q
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: integration
        timestamp: Wed 2008-08-06 18:23:43 +1000
        message:
          merge back 1.6 and start 1.7
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzr                            bzr.py-20050313053754-5485f144c7006fa6
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
        ------------------------------------------------------------
        revno: 3603.4.1
        revision-id: pqm at pqm.ubuntu.com-20080806081305-xvxw50wzvr47315q
        parent: pqm at pqm.ubuntu.com-20080805202941-gdv30kq4cign8fs4
        parent: mbp at sourcefrog.net-20080806073930-d12u94cx6d0w0ctt
        committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
        branch nick: 1.6
        timestamp: Wed 2008-08-06 09:13:05 +0100
        message:
          (mbp) prepare 1.6rc1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
        ------------------------------------------------------------
        revno: 3603.3.2
        revision-id: mbp at sourcefrog.net-20080806073930-d12u94cx6d0w0ctt
        parent: mbp at sourcefrog.net-20080806070209-08j1bpnnjxqydi09
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: prepare-1.6
        timestamp: Wed 2008-08-06 17:39:30 +1000
        message:
          Prepare 1.6rc1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
    ------------------------------------------------------------
    revno: 3603.2.4
    revision-id: pqm at pqm.ubuntu.com-20080806073717-dz0d9gglgf8r9996
    parent: pqm at pqm.ubuntu.com-20080805202941-gdv30kq4cign8fs4
    parent: mbp at sourcefrog.net-20080806070209-08j1bpnnjxqydi09
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Wed 2008-08-06 08:37:17 +0100
    message:
      (mbp) merge back NEWS of 1.6b3 release
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 3603.3.1
        revision-id: mbp at sourcefrog.net-20080806070209-08j1bpnnjxqydi09
        parent: pqm at pqm.ubuntu.com-20080805202941-gdv30kq4cign8fs4
        parent: mbp at sourcefrog.net-20080717082406-jtexfvbbd0d4eqgv
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: prepare-1.6
        timestamp: Wed 2008-08-06 17:02:09 +1000
        message:
          Merge up news from 1.6b3 and correct misplaced items
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 3549.4.2
        revision-id: mbp at sourcefrog.net-20080717082406-jtexfvbbd0d4eqgv
        parent: mbp at sourcefrog.net-20080717081840-m8fra9sylk1xdsyx
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: prepare-1.6
        timestamp: Thu 2008-07-17 18:24:06 +1000
        message:
          Correct the version number in NEWS
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 3549.4.1
        revision-id: mbp at sourcefrog.net-20080717081840-m8fra9sylk1xdsyx
        parent: mbp at sourcefrog.net-20080717080025-bd9k6gpkkkntipwr
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: prepare-1.6
        timestamp: Thu 2008-07-17 18:18:40 +1000
        message:
          Prepare 1.6b3
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
    ------------------------------------------------------------
    revno: 3603.2.3
    revision-id: pqm at pqm.ubuntu.com-20080805202941-gdv30kq4cign8fs4
    parent: pqm at pqm.ubuntu.com-20080805062143-idm263sn4iw3cmkw
    parent: robertc at robertcollins.net-20080718112738-ayyj205j3lo2nve1
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2008-08-05 21:29:41 +0100
    message:
      (robertc) Do not generate a revision number map for tags if there are
      	no tags. (Robert Collins)
    modified:
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
        ------------------------------------------------------------
        revno: 3553.1.1
        revision-id: robertc at robertcollins.net-20080718112738-ayyj205j3lo2nve1
        parent: pqm at pqm.ubuntu.com-20080717073312-reglpowwyo671081
        committer: Robert Collins <robertc at robertcollins.net>
        branch nick: misc-fixen
        timestamp: Fri 2008-07-18 21:27:38 +1000
        message:
          Do not scan history for tags when none are present.
        modified:
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
    ------------------------------------------------------------
    revno: 3603.2.2
    revision-id: pqm at pqm.ubuntu.com-20080805062143-idm263sn4iw3cmkw
    parent: pqm at pqm.ubuntu.com-20080805044416-k5w5uuy3l785e7cm
    parent: mbp at sourcefrog.net-20080804075541-jka7smxkix7ozvb1
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2008-08-05 07:21:43 +0100
    message:
      (mbp) test upgrade with stacking
    added:
      bzrlib/tests/test_upgrade_stacked.py test_upgrade_stacked-20080804072225-jd13yami19nskns5-1
    modified:
      bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
      bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
      bzrlib/upgrade.py              history2weaves.py-20050818063535-e7d319791c19a8b2
        ------------------------------------------------------------
        revno: 3602.2.2
        revision-id: mbp at sourcefrog.net-20080804075541-jka7smxkix7ozvb1
        parent: mbp at sourcefrog.net-20080804064759-1vdd56edlca9j2rq
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: stacking
        timestamp: Mon 2008-08-04 17:55:41 +1000
        message:
          Make tests for stacked upgrade scenario-based
        added:
          bzrlib/tests/test_upgrade_stacked.py test_upgrade_stacked-20080804072225-jd13yami19nskns5-1
        modified:
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
        ------------------------------------------------------------
        revno: 3602.2.1
        revision-id: mbp at sourcefrog.net-20080804064759-1vdd56edlca9j2rq
        parent: pqm at pqm.ubuntu.com-20080804032751-myaykx8azatkvlf8
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: stacking
        timestamp: Mon 2008-08-04 16:47:59 +1000
        message:
          Fix and test for problem upgrading stacked branches
        modified:
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/upgrade.py              history2weaves.py-20050818063535-e7d319791c19a8b2
    ------------------------------------------------------------
    revno: 3603.2.1
    revision-id: pqm at pqm.ubuntu.com-20080805044416-k5w5uuy3l785e7cm
    parent: pqm at pqm.ubuntu.com-20080805011407-wmq7130znc0e6c4x
    parent: robertc at robertcollins.net-20080805041043-6krwcxp2ebhzbumy
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2008-08-05 05:44:16 +0100
    message:
      (robertc) Further tweaks to tests and comments in the commit excludes
      	feature. (Robert Collins, Andrew Bennetts)
    modified:
      bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
      bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
    ------------------------------------------------------------
    revno: 3603.1.1
    revision-id: robertc at robertcollins.net-20080805041043-6krwcxp2ebhzbumy
    parent: pqm at pqm.ubuntu.com-20080805011407-wmq7130znc0e6c4x
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: integration
    timestamp: Tue 2008-08-05 14:10:43 +1000
    message:
      Further tweaks to tests and comments in the commit excludes feature.
    modified:
      bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
      bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
=== modified file 'NEWS'
--- a/NEWS	2008-08-05 06:01:40 +0000
+++ b/NEWS	2008-08-08 05:44:44 +0000
@@ -4,20 +4,44 @@
 
 .. contents::
 
-
 IN DEVELOPMENT
 --------------
 
   CHANGES:
 
+  IMPROVEMENTS:
+
+  BUG FIXES:
+
+    * ``bzr upgrade`` on remote branches accessed via bzr:// and
+      bzr+ssh:// now works.  (Andrew Bennetts)
+
+    * sftp transport: added missing ``FileExists`` case to
+      ``_translate_io_exception`` (Christophe Troestler, #123475)
+
+    * The help for ``bzr ignored`` now suggests ``bzr ls --ignored`` for
+      scripting use. (Robert Collins, #3834)
+
+  API CHANGES:
+
+  INTERNALS:
+
+
+bzr 1.6rc1 2008-08-06
+---------------------
+
+This release candidate for bzr 1.6 solidifies the new branch stacking
+feature.  Bazaar now recommends that users upgrade all knit repositories,
+because later formats are much faster.  However, we plan to continue read/write and
+upgrade support for knit repostories for the forseeable future.  Several
+other bugs and performance issues were fixed.
+
+  CHANGES:
+
     * Knit format repositories are deprecated and bzr will now emit
       warnings whenever it encounters one.  Use ``bzr upgrade`` to upgrade
       knit repositories to pack format.  (Andrew Bennetts)
       
-
-  FEATURES:
-
-
   IMPROVEMENTS:
 
     * ``bzr check`` can now be told which elements at a location it should
@@ -26,6 +50,10 @@
     * Commit now supports ``--exclude`` (or ``-x``) to exclude some files
       from the commit. (Robert Collins, #3117)
 
+    * Fetching data between repositories that have the same model but no 
+      optimised fetcher will not reserialise all the revisions, increasing
+      performance. (Robert Collins, John Arbash Meinel)
+
     * Give a more specific error when target branch is not reachable.
       (James Westby)
 
@@ -37,9 +65,9 @@
       Anywhere from 2x-6x faster depending on the size of the tree (bigger
       trees, bigger benefit.) (John Arbash Meinel)
 
-    * Fetching data between repositories that have the same model but no 
-      optimised fetcher will not reserialise all the revisions, increasing
-      performance. (Robert Collins, John Arbash Meinel)
+    * New registry for log properties handles  and the method in 
+      LongLogFormatter to display the custom properties returned by the 
+      registered handlers. (Guillermo Gonzalez, #162469)
 
   BUG FIXES:
 
@@ -57,6 +85,15 @@
     * ``bzr export`` no longer exports ``.bzrrules``.
       (Ian Clatworthy)
 
+    * ``bzr serve --directory=/`` now correctly allows the whole
+      filesystem to be accessed on Windows, not just the root of the drive
+      that Python is running from.
+      (Adrian Wilkins, #240910)
+
+    * Deleting directories by hand before running ``bzr rm`` will not
+      cause subsequent errors in ``bzr st`` and ``bzr commit``.
+      (Robert Collins, #150438)
+
     * Fix a test case that was failing if encoding wasn't UTF-8.
       (John Arbash Meinel, #247585)
 
@@ -64,18 +101,11 @@
       smart server protocol to or from Windows.
       (Andrew Bennetts, #246180)
 
-    * Deleting directories by hand before running ``bzr rm`` will not
-      cause subsequent errors in ``bzr st`` and ``bzr commit``.
-      (Robert Collins, #150438)
-
-    * The help for ``bzr ignored`` now sugests ``bzr ls --ignored`` for
-      scripting use. (Robert Collins, #3834)
-
-  DOCUMENTATION:
-
-
-  TESTING:
-
+    * Fixed problem in branching from smart server.
+      (#249256, Michael Hudson, Martin Pool) 
+
+    * Handle a file turning in to a directory in TreeTransform.
+      (James Westby, #248448)
 
   API CHANGES:
 
@@ -106,7 +136,6 @@
       file when locked. And during probe, locking the repo isn't very
       useful. (John Arbash Meinel)
 
-
   INTERNALS:
 
     * ``bzrlib.branchbuilder.BranchBuilder`` is now much more capable of
@@ -133,6 +162,12 @@
 bzr 1.6beta3 2008-07-17
 -----------------------
 
+This release adds a new 'stacked branches' feature allowing branches to
+share storage without being in the same repository or on the same machine.
+(See the user guide for more details.)  It also adds a new hook, improved
+weaves, aliases for related locations, faster bzr+ssh push, and several
+bug fixes.
+
   FEATURES:
 
     * New ``pre_change_branch_tip`` hook that is called before the
@@ -149,7 +184,9 @@
     * Sites may suggest a branch to stack new branches on.  (Aaron Bentley)
 
     * Stacked branches are now supported. See ``bzr help branch`` and 
-      ``bzr help push``. (Robert Collins)
+      ``bzr help push``.  Branches must be in the ``development1`` format
+      to stack, though the stacked-on branch can be of any format. 
+      (Robert Collins)
 
   IMPROVEMENTS:
 
@@ -173,10 +210,6 @@
       revision info directly.  This makes operations like push
       faster.  The new request method name is
       ``Branch.set_last_revision_ex``.  (Andrew Bennetts)
-      
-    * New registry for log properties handles  and the method in 
-      LongLogFormatter to display the custom properties returned by the 
-      registered handlers. (Guillermo Gonzalez, #162469)
 
   BUG FIXES:
 
@@ -193,11 +226,6 @@
       requires a branch to be present.
       (Daniel Watkins, #64783)
 
-    * ``bzr serve --directory=/`` now correctly allows the whole
-      filesystem to be accessed on Windows, not just the root of the drive
-      that Python is running from.
-      (Adrian Wilkins, #240910)
-
     * Clearer message about how to set the PYTHONPATH if bzrlib can't be
       loaded. 
       (Martin Pool, #205230)
@@ -207,9 +235,6 @@
       still in ``.bzr.log`` and can be shown with ``-Derror``.
       (Martin Pool, #240161)
 
-    * Fixed problem in branching from smart server.
-      (#249256, Michael Hudson, Martin Pool) 
-
     * Fetch from a stacked branch copies all required data.
       (Aaron Bentley, #248506)
 
@@ -239,9 +264,6 @@
     * Set locale from environment for third party libs.
       (Martin von Gagern, #128496)
 
-    * Handle a file turning in to a directory in TreeTransform.
-      (James Westby, #248448)
-
   DOCUMENTATION:
 
     * Added *Using stacked branches* to the User Guide.

=== modified file 'bzr'
--- a/bzr	2008-07-03 10:44:34 +0000
+++ b/bzr	2008-08-06 08:23:43 +0000
@@ -22,7 +22,7 @@
 import sys
 
 # update this on each release
-_script_version = (1, 6, 0)
+_script_version = (1, 7, 0)
 
 if __doc__ is None:
     print "bzr does not support python -OO."

=== modified file 'bzrlib/__init__.py'
--- a/bzrlib/__init__.py	2008-08-04 22:41:18 +0000
+++ b/bzrlib/__init__.py	2008-08-06 08:23:43 +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, 'beta', 4)
+version_info = (1, 7, 0, 'dev', 0)
 
 
 # API compatibility version: bzrlib is currently API compatible with 1.6.

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2008-08-05 06:01:40 +0000
+++ b/bzrlib/builtins.py	2008-08-08 05:44:44 +0000
@@ -4323,6 +4323,9 @@
 
     It is an error to give a tag name that already exists unless you pass 
     --force, in which case the tag is moved to point to the new revision.
+
+    To rename a tag (change the name but keep it on the same revsion), run ``bzr
+    tag new-name -r tag:old-name`` and then ``bzr tag --delete oldname``.
     """
 
     _see_also = ['commit', 'tags']
@@ -4400,6 +4403,8 @@
             ):
         branch, relpath = Branch.open_containing(directory)
         tags = branch.tags.get_tag_dict().items()
+        if not tags:
+            return
         if sort == 'alpha':
             tags.sort()
         elif sort == 'time':

=== modified file 'bzrlib/commit.py'
--- a/bzrlib/commit.py	2008-08-04 22:07:34 +0000
+++ b/bzrlib/commit.py	2008-08-05 04:10:43 +0000
@@ -758,8 +758,8 @@
                     # the path has a deleted parent, do not add it.
                     continue
             if exclude and is_inside_any(exclude, path):
-                # Skip - it is to be considered by the final copy-from-basis
-                # step.
+                # Skip excluded paths. Excluded paths are processed by
+                # _update_builder_with_changes.
                 continue
             content_summary = self.work_tree.path_content_summary(path)
             # Note that when a filter of specific files is given, we must only

=== modified file 'bzrlib/repofmt/pack_repo.py'
--- a/bzrlib/repofmt/pack_repo.py	2008-07-28 06:08:42 +0000
+++ b/bzrlib/repofmt/pack_repo.py	2008-08-05 14:35:14 +0000
@@ -17,16 +17,16 @@
 from bzrlib.lazy_import import lazy_import
 lazy_import(globals(), """
 from itertools import izip
-import math
 import md5
 import time
 
 from bzrlib import (
-        debug,
-        graph,
-        pack,
-        ui,
-        )
+    debug,
+    graph,
+    pack,
+    transactions,
+    ui,
+    )
 from bzrlib.index import (
     GraphIndex,
     GraphIndexBuilder,
@@ -41,8 +41,6 @@
     _DirectPackAccess,
     )
 from bzrlib.osutils import rand_chars, split_lines
-from bzrlib.pack import ContainerWriter
-from bzrlib.store import revision
 from bzrlib import tsort
 """)
 from bzrlib import (
@@ -50,30 +48,23 @@
     errors,
     lockable_files,
     lockdir,
-    osutils,
     symbol_versioning,
-    transactions,
     xml5,
     xml6,
     xml7,
     )
 
-from bzrlib.decorators import needs_read_lock, needs_write_lock
+from bzrlib.decorators import needs_write_lock
 from bzrlib.repofmt.knitrepo import KnitRepository
 from bzrlib.repository import (
     CommitBuilder,
-    InterRepository,
-    MetaDirRepository,
     MetaDirRepositoryFormat,
     RepositoryFormat,
     RootCommitBuilder,
     )
 import bzrlib.revision as _mod_revision
-from bzrlib.store.versioned import VersionedFileStore
 from bzrlib.trace import (
     mutter,
-    mutter_callsite,
-    note,
     warning,
     )
 
@@ -1819,7 +1810,6 @@
             raise errors.ReadOnlyError(self)
         self._write_lock_count += 1
         if self._write_lock_count == 1:
-            from bzrlib import transactions
             self._transaction = transactions.WriteTransaction()
             for repo in self._fallback_repositories:
                 # Writes don't affect fallback repos
@@ -1980,103 +1970,6 @@
         pass
 
 
-class RepositoryFormatPack(MetaDirRepositoryFormat):
-    """Format logic for pack structured repositories.
-
-    This repository format has:
-     - a list of packs in pack-names
-     - packs in packs/NAME.pack
-     - indices in indices/NAME.{iix,six,tix,rix}
-     - knit deltas in the packs, knit indices mapped to the indices.
-     - thunk objects to support the knits programming API.
-     - a format marker of its own
-     - an optional 'shared-storage' flag
-     - an optional 'no-working-trees' flag
-     - a LockDir lock
-    """
-
-    # Set this attribute in derived classes to control the repository class
-    # created by open and initialize.
-    repository_class = None
-    # Set this attribute in derived classes to control the
-    # _commit_builder_class that the repository objects will have passed to
-    # their constructor.
-    _commit_builder_class = None
-    # Set this attribute in derived clases to control the _serializer that the
-    # repository objects will have passed to their constructor.
-    _serializer = None
-    # External references are not supported in pack repositories yet.
-    supports_external_lookups = False
-
-    def initialize(self, a_bzrdir, shared=False):
-        """Create a pack based repository.
-
-        :param a_bzrdir: bzrdir to contain the new repository; must already
-            be initialized.
-        :param shared: If true the repository will be initialized as a shared
-                       repository.
-        """
-        mutter('creating repository in %s.', a_bzrdir.transport.base)
-        dirs = ['indices', 'obsolete_packs', 'packs', 'upload']
-        builder = GraphIndexBuilder()
-        files = [('pack-names', builder.finish())]
-        utf8_files = [('format', self.get_format_string())]
-        
-        self._upload_blank_content(a_bzrdir, dirs, files, utf8_files, shared)
-        return self.open(a_bzrdir=a_bzrdir, _found=True)
-
-    def open(self, a_bzrdir, _found=False, _override_transport=None):
-        """See RepositoryFormat.open().
-        
-        :param _override_transport: INTERNAL USE ONLY. Allows opening the
-                                    repository at a slightly different url
-                                    than normal. I.e. during 'upgrade'.
-        """
-        if not _found:
-            format = RepositoryFormat.find_format(a_bzrdir)
-        if _override_transport is not None:
-            repo_transport = _override_transport
-        else:
-            repo_transport = a_bzrdir.get_repository_transport(None)
-        control_files = lockable_files.LockableFiles(repo_transport,
-                                'lock', lockdir.LockDir)
-        return self.repository_class(_format=self,
-                              a_bzrdir=a_bzrdir,
-                              control_files=control_files,
-                              _commit_builder_class=self._commit_builder_class,
-                              _serializer=self._serializer)
-
-
-class RepositoryFormatKnitPack1(RepositoryFormatPack):
-    """A no-subtrees parameterized Pack repository.
-
-    This format was introduced in 0.92.
-    """
-
-    repository_class = KnitPackRepository
-    _commit_builder_class = PackCommitBuilder
-    _serializer = xml5.serializer_v5
-
-    def _get_matching_bzrdir(self):
-        return bzrdir.format_registry.make_bzrdir('pack-0.92')
-
-    def _ignore_setting_bzrdir(self, format):
-        pass
-
-    _matchingbzrdir = property(_get_matching_bzrdir, _ignore_setting_bzrdir)
-
-    def get_format_string(self):
-        """See RepositoryFormat.get_format_string()."""
-        return "Bazaar pack repository format 1 (needs bzr 0.92)\n"
-
-    def get_format_description(self):
-        """See RepositoryFormat.get_format_description()."""
-        return "Packs containing knits without subtree support"
-
-    def check_conversion_target(self, target_format):
-        pass
-
-
 class RepositoryFormatKnitPack3(RepositoryFormatPack):
     """A subtrees parameterized Pack repository.
 

=== modified file 'bzrlib/tests/__init__.py'
--- a/bzrlib/tests/__init__.py	2008-08-01 04:40:30 +0000
+++ b/bzrlib/tests/__init__.py	2008-08-04 07:55:41 +0000
@@ -2815,6 +2815,7 @@
                    'bzrlib.tests.test_ui',
                    'bzrlib.tests.test_uncommit',
                    'bzrlib.tests.test_upgrade',
+                   'bzrlib.tests.test_upgrade_stacked',
                    'bzrlib.tests.test_urlutils',
                    'bzrlib.tests.test_versionedfile',
                    'bzrlib.tests.test_version',

=== modified file 'bzrlib/tests/test_repository.py'
--- a/bzrlib/tests/test_repository.py	2008-08-01 04:40:30 +0000
+++ b/bzrlib/tests/test_repository.py	2008-08-04 07:55:41 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2006, 2007 Canonical Ltd
+# Copyright (C) 2006, 2007, 2008 Canonical Ltd
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by

=== modified file 'bzrlib/tests/test_transform.py'
--- a/bzrlib/tests/test_transform.py	2008-07-22 20:37:43 +0000
+++ b/bzrlib/tests/test_transform.py	2008-08-02 16:11:23 +0000
@@ -1219,6 +1219,7 @@
         wt = self.make_branch_and_tree('.')
         self.build_tree(['foo'])
         wt.add(['foo'])
+        wt.commit("one")
         tt = TreeTransform(wt)
         self.addCleanup(tt.finalize)
         foo_trans_id = tt.trans_id_tree_path("foo")
@@ -1229,6 +1230,74 @@
         tt.version_file("bar-1", bar_trans_id)
         tt.apply()
         self.failUnlessExists("foo/bar")
+        wt.lock_read()
+        try:
+            self.assertEqual(wt.inventory.get_file_kind(wt.path2id("foo")),
+                    "directory")
+        finally:
+            wt.unlock()
+        wt.commit("two")
+        changes = wt.changes_from(wt.basis_tree())
+        self.assertFalse(changes.has_changed(), changes)
+
+    def test_file_to_symlink(self):
+        self.requireFeature(SymlinkFeature)
+        wt = self.make_branch_and_tree('.')
+        self.build_tree(['foo'])
+        wt.add(['foo'])
+        wt.commit("one")
+        tt = TreeTransform(wt)
+        self.addCleanup(tt.finalize)
+        foo_trans_id = tt.trans_id_tree_path("foo")
+        tt.delete_contents(foo_trans_id)
+        tt.create_symlink("bar", foo_trans_id)
+        tt.apply()
+        self.failUnlessExists("foo")
+        wt.lock_read()
+        self.addCleanup(wt.unlock)
+        self.assertEqual(wt.inventory.get_file_kind(wt.path2id("foo")),
+                "symlink")
+
+    def test_dir_to_file(self):
+        wt = self.make_branch_and_tree('.')
+        self.build_tree(['foo/', 'foo/bar'])
+        wt.add(['foo', 'foo/bar'])
+        wt.commit("one")
+        tt = TreeTransform(wt)
+        self.addCleanup(tt.finalize)
+        foo_trans_id = tt.trans_id_tree_path("foo")
+        bar_trans_id = tt.trans_id_tree_path("foo/bar")
+        tt.delete_contents(foo_trans_id)
+        tt.delete_versioned(bar_trans_id)
+        tt.create_file(["aa\n"], foo_trans_id)
+        tt.apply()
+        self.failUnlessExists("foo")
+        wt.lock_read()
+        self.addCleanup(wt.unlock)
+        self.assertEqual(wt.inventory.get_file_kind(wt.path2id("foo")),
+                "file")
+
+    def test_dir_to_hardlink(self):
+        self.requireFeature(HardlinkFeature)
+        wt = self.make_branch_and_tree('.')
+        self.build_tree(['foo/', 'foo/bar'])
+        wt.add(['foo', 'foo/bar'])
+        wt.commit("one")
+        tt = TreeTransform(wt)
+        self.addCleanup(tt.finalize)
+        foo_trans_id = tt.trans_id_tree_path("foo")
+        bar_trans_id = tt.trans_id_tree_path("foo/bar")
+        tt.delete_contents(foo_trans_id)
+        tt.delete_versioned(bar_trans_id)
+        self.build_tree(['baz'])
+        tt.create_hardlink("baz", foo_trans_id)
+        tt.apply()
+        self.failUnlessExists("foo")
+        self.failUnlessExists("baz")
+        wt.lock_read()
+        self.addCleanup(wt.unlock)
+        self.assertEqual(wt.inventory.get_file_kind(wt.path2id("foo")),
+                "file")
 
 
 class TransformGroup(object):

=== added file 'bzrlib/tests/test_upgrade_stacked.py'
--- a/bzrlib/tests/test_upgrade_stacked.py	1970-01-01 00:00:00 +0000
+++ b/bzrlib/tests/test_upgrade_stacked.py	2008-08-04 07:55:41 +0000
@@ -0,0 +1,90 @@
+# Copyright (C) 2008 Canonical Ltd
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+"""Tests for upgrades of various stacking situations."""
+
+from bzrlib import (
+    bzrdir,
+    errors,
+    tests,
+    )
+from bzrlib.upgrade import upgrade
+
+
+class TestStackUpgrade(tests.TestCaseWithTransport):
+    # TODO: This should possibly be repeated for all stacking repositories,
+    # pairwise by rich/non-rich format; should possibly also try other kinds
+    # of upgrades like knit->pack. -- mbp 20080804
+
+    def test_stack_upgrade(self):
+        """Correct checks when stacked-on repository is upgraded.
+        
+        We initially stack on a repo with the same rich root support, 
+        we then upgrade it and should fail, we then upgrade the overlaid 
+        repository.
+        """
+        base = self.make_branch_and_tree('base',
+            format=self.scenario_old_format)
+        self.build_tree(['base/foo'])
+        base.commit('base commit')
+        # make another one stacked
+        stacked = base.bzrdir.sprout('stacked', stacked=True)
+        # this must really be stacked (or get_stacked_on_url raises an error)
+        self.assertTrue(stacked.open_branch().get_stacked_on_url())
+        # now we'll upgrade the underlying branch, then upgrade the stacked
+        # branch, and this should still work.
+        new_format = bzrdir.format_registry.make_bzrdir(
+            self.scenario_new_format)
+        upgrade('base', new_format)
+        # in some cases you'll get an error if the underlying model has
+        # changed; if just the data format has changed this should still work
+        if self.scenario_model_change:
+            self.assertRaises(errors.IncompatibleRepositories,
+                stacked.open_branch)
+        else:
+            stacked.open_branch().check()
+        stacked = bzrdir.BzrDir.open('stacked')
+        # but we can upgrade the stacked repository
+        upgrade('stacked', new_format)
+        # and now it's ok
+        stacked = bzrdir.BzrDir.open('stacked')
+        stacked.open_branch().check()
+
+
+def load_tests(basic_tests, module, test_loader):
+    """Generate dynamic scenario tests.
+
+    Called by the bzrlib test framework.
+    """
+    scenario_pairs = [ # old format, new format, model_change
+#        ('knit', 'rich-root', True),
+        ('knit', '1.6', False),
+#        ('pack-0.92', '1.6', False),
+        ('1.6', '1.6-rich-root', True),
+        ]
+    scenarios = []
+    for (old_name, new_name, model_change) in scenario_pairs:
+        name = old_name + ', ' + new_name
+        scenarios.append((name,
+            dict(scenario_old_format=old_name,
+                scenario_new_format=new_name,
+                scenario_model_change=model_change)))
+    adapter = tests.TestScenarioApplier()
+    adapter.scenarios = scenarios
+    suite = tests.TestSuite()
+    tests.adapt_tests(basic_tests, adapter, suite)
+    return suite

=== modified file 'bzrlib/tests/workingtree_implementations/test_commit.py'
--- a/bzrlib/tests/workingtree_implementations/test_commit.py	2008-08-05 00:06:19 +0000
+++ b/bzrlib/tests/workingtree_implementations/test_commit.py	2008-08-05 04:10:43 +0000
@@ -233,7 +233,7 @@
         tree = self.make_branch_and_tree('.')
         self.build_tree(['a/', 'a/b'])
         tree.smart_add(['.'])
-        tree.commit('test', exclude=['a/b'])
+        tree.commit('test', specific_files=['a'], exclude=['a/b'])
         # If a/b was excluded it will still be 'added' in status.
         tree.lock_read()
         self.addCleanup(tree.unlock)

=== modified file 'bzrlib/transform.py'
--- a/bzrlib/transform.py	2008-07-22 20:21:43 +0000
+++ b/bzrlib/transform.py	2008-08-01 16:10:59 +0000
@@ -1217,10 +1217,10 @@
                 mover = _mover
             try:
                 child_pb.update('Apply phase', 0, 2)
-                self._apply_removals(new_inventory_delta, mover)
+                kind_changes = self._apply_removals(new_inventory_delta, mover)
                 child_pb.update('Apply phase', 1, 2)
                 modified_paths = self._apply_insertions(new_inventory_delta,
-                                                        mover)
+                                                        mover, kind_changes)
             except:
                 mover.rollback()
                 raise
@@ -1244,6 +1244,7 @@
         """
         tree_paths = list(self._tree_path_ids.iteritems())
         tree_paths.sort(reverse=True)
+        kind_changes = set()
         child_pb = bzrlib.ui.ui_factory.nested_progress_bar()
         try:
             for num, data in enumerate(tree_paths):
@@ -1251,6 +1252,12 @@
                 child_pb.update('removing file', num, len(tree_paths))
                 full_path = self._tree.abspath(path)
                 if trans_id in self._removed_contents:
+                    try:
+                        if (self.tree_kind(trans_id)
+                                != self.final_kind(trans_id)):
+                            kind_changes.add(trans_id)
+                    except NoSuchFile:
+                        pass
                     mover.pre_delete(full_path, os.path.join(self._deletiondir,
                                      trans_id))
                 elif trans_id in self._new_name or trans_id in \
@@ -1274,8 +1281,9 @@
                     inventory_delta.append((path, None, file_id, None))
         finally:
             child_pb.finished()
+        return kind_changes
 
-    def _apply_insertions(self, inventory_delta, mover):
+    def _apply_insertions(self, inventory_delta, mover, kind_changes):
         """Perform tree operations that insert directory/inventory names.
 
         That is, create any files that need to be created, and restore from
@@ -1284,6 +1292,9 @@
 
         If inventory_delta is None, no inventory delta is calculated, and
         no list of modified paths is returned.
+
+        kind_changes is a set of trans ids where the entry has changed
+        kind, and so an inventory delta entry should be created for them.
         """
         new_paths = self.new_paths(filesystem_only=(inventory_delta is None))
         modified_paths = []
@@ -1320,7 +1331,8 @@
                     if file_id is not None and (trans_id in self._new_id or
                         trans_id in self._new_name or
                         trans_id in self._new_parent
-                        or trans_id in self._new_executability):
+                        or trans_id in self._new_executability
+                        or trans_id in kind_changes):
                         try:
                             kind = self.final_kind(trans_id)
                         except NoSuchFile:

=== modified file 'bzrlib/transport/remote.py'
--- a/bzrlib/transport/remote.py	2008-06-18 01:03:51 +0000
+++ b/bzrlib/transport/remote.py	2008-07-25 03:12:11 +0000
@@ -421,9 +421,6 @@
     def disconnect(self):
         self.get_smart_medium().disconnect()
 
-    def delete_tree(self, relpath):
-        raise errors.TransportNotPossible('readonly transport')
-
     def stat(self, relpath):
         resp = self._call2('stat', self._remote_path(relpath))
         if resp[0] == 'stat':

=== modified file 'bzrlib/transport/sftp.py'
--- a/bzrlib/transport/sftp.py	2008-07-09 09:36:41 +0000
+++ b/bzrlib/transport/sftp.py	2008-07-18 19:51:08 +0000
@@ -584,7 +584,8 @@
             if (e.args == ('No such file or directory',) or
                 e.args == ('No such file',)):
                 raise NoSuchFile(path, str(e) + more_info)
-            if (e.args == ('mkdir failed',)):
+            if (e.args == ('mkdir failed',) or
+                e.args[0].startswith('syserr: File exists')):
                 raise FileExists(path, str(e) + more_info)
             # strange but true, for the paramiko server.
             if (e.args == ('Failure',)):

=== modified file 'bzrlib/upgrade.py'
--- a/bzrlib/upgrade.py	2008-03-14 21:31:15 +0000
+++ b/bzrlib/upgrade.py	2008-08-07 00:25:38 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2005 Canonical Ltd
+# Copyright (C) 2005, 2008 Canonical Ltd
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,6 +21,7 @@
 
 from bzrlib.bzrdir import ConvertBzrDir4To5, ConvertBzrDir5To6, BzrDir, BzrDirFormat4, BzrDirFormat5, BzrDirFormat
 import bzrlib.errors as errors
+from bzrlib.remote import RemoteBzrDir
 from bzrlib.transport import get_transport
 import bzrlib.ui as ui
 
@@ -30,6 +31,9 @@
     def __init__(self, url, format):
         self.format = format
         self.bzrdir = BzrDir.open_unsupported(url)
+        if isinstance(self.bzrdir, RemoteBzrDir):
+            self.bzrdir._ensure_real()
+            self.bzrdir = self.bzrdir._real_bzrdir
         if self.bzrdir.root_transport.is_readonly():
             raise errors.UpgradeReadonly
         self.transport = self.bzrdir.root_transport
@@ -47,12 +51,15 @@
                 self.pb.note("This is a checkout. The branch (%s) needs to be "
                              "upgraded separately.",
                              branch.bzrdir.root_transport.base)
-        except errors.NotBranchError:
+            del branch
+        except (errors.NotBranchError, errors.IncompatibleRepositories):
+            # might not be a format we can open without upgrading; see e.g. 
+            # https://bugs.launchpad.net/bzr/+bug/253891
             pass
         if not self.bzrdir.needs_format_conversion(self.format):
             raise errors.UpToDateFormat(self.bzrdir._format)
         if not self.bzrdir.can_convert_format():
-            raise errors.BzrError("cannot upgrade from branch format %s" %
+            raise errors.BzrError("cannot upgrade from bzrdir format %s" %
                            self.bzrdir._format)
         if self.format is None:
             target_format = BzrDirFormat.get_default_format()




More information about the bazaar-commits mailing list