Rev 3241: Implement checkout entirely via dirstate (abentley) in file:///home/pqm/archives/thelove/bzr/%2Btrunk/

Canonical.com Patch Queue Manager pqm at pqm.ubuntu.com
Thu Feb 28 03:23:07 GMT 2008


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

------------------------------------------------------------
revno: 3241
revision-id:pqm at pqm.ubuntu.com-20080228032258-4mdmqlx603ak6x2w
parent: pqm at pqm.ubuntu.com-20080227213154-a7egrkiapeuvmu3b
parent: aaron at aaronbentley.com-20080228013841-5j4n9784mc4fpeim
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2008-02-28 03:22:58 +0000
message:
  Implement checkout entirely via dirstate (abentley)
modified:
  bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
  bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
  bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
  bzrlib/tests/workingtree_implementations/test_inv.py test_inv.py-20070311221604-ighlq8tbn5xq0kuo-1
  bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
  bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
  bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
  bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
  bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3146.8.20
    revision-id:aaron at aaronbentley.com-20080228013841-5j4n9784mc4fpeim
    parent: aaron at aaronbentley.com-20080228013335-a6izyivlpd7ht72z
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: no-inventory5
    timestamp: Wed 2008-02-27 20:38:41 -0500
    message:
      Fix trailing whitespace
    modified:
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
    ------------------------------------------------------------
    revno: 3146.8.19
    revision-id:aaron at aaronbentley.com-20080228013335-a6izyivlpd7ht72z
    parent: aaron at aaronbentley.com-20080228003628-pjxtmj4qxibbnt8e
    parent: pqm at pqm.ubuntu.com-20080227213154-a7egrkiapeuvmu3b
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: no-inventory5
    timestamp: Wed 2008-02-27 20:33:35 -0500
    message:
      Merge with bzr.dev
    removed:
      bzrlib/plugins/multiparent.py  mpregen-20070411063203-5x9z7i73add0d6f6-1
      index.txt                      index.txt-20071121073725-0corxykv5irjal00-1
    added:
      bzrlib/plugins/launchpad/test_lp_service.py test_lp_service.py-20080213034527-drf0ucr2x1js3onb-1
      doc/developers/development-repo.txt developmentrepo.txt-20080102200205-raj42k61dch8pjmj-1
      tools/package_mf.py            package_mf.py-20080206141953-323gd0qb2z3tn5pc-1
    modified:
      .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzr                            bzr.py-20050313053754-5485f144c7006fa6
      bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
      bzrlib/annotate.py             annotate.py-20050922133147-7c60541d2614f022
      bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/bundle/commands.py      __init__.py-20050617152058-1b6530d9ab85c11c
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/delta.py                delta.py-20050729221636-54cf14ef94783d0a
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
      bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
      bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
      bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
      bzrlib/info.py                 info.py-20050323235939-6bbfe7d9700b0b9b
      bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
      bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
      bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
      bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
      bzrlib/plugin.py               plugin.py-20050622060424-829b654519533d69
      bzrlib/plugins/launchpad/__init__.py __init__.py-20060315182712-2d5feebd2a1032dc
      bzrlib/plugins/launchpad/lp_indirect.py lp_indirect.py-20070126012204-de5rugwlt22c7u7e-1
      bzrlib/plugins/launchpad/lp_registration.py lp_registration.py-20060315190948-daa617eafe3a8d48
      bzrlib/plugins/launchpad/test_lp_indirect.py test_lp_indirect.py-20070126002743-oyle362tzv9cd8mi-1
      bzrlib/plugins/launchpad/test_register.py test_register.py-20060315182712-40f5dda945c829a8
      bzrlib/progress.py             progress.py-20050610070202-df9faaab791964c0
      bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
      bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
      bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
      bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/smart/bzrdir.py         bzrdir.py-20061122024551-ol0l0o0oofsu9b3t-1
      bzrlib/smart/medium.py         medium.py-20061103051856-rgu2huy59fkz902q-1
      bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
      bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
      bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
      bzrlib/status.py               status.py-20050505062338-431bfa63ec9b19e6
      bzrlib/symbol_versioning.py    symbol_versioning.py-20060105104851-9ecf8af605d15a80
      bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
      bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
      bzrlib/tests/blackbox/test_bundle_info.py test_bundle_info.py-20070816181255-eiuodwxuqu7w7gxf-1
      bzrlib/tests/blackbox/test_checkout.py test_checkout.py-20060211231752-a5cde67cf70af854
      bzrlib/tests/blackbox/test_outside_wt.py test_outside_wt.py-20060116200058-98edd33e7db8bdde
      bzrlib/tests/blackbox/test_pull.py test_pull.py-20051201144907-64959364f629947f
      bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
      bzrlib/tests/blackbox/test_version_info.py test_bb_version_info.py-20051228204928-91711c6559d952f7
      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_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
      bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
      bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
      bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
      bzrlib/tests/test_errors.py    test_errors.py-20060210110251-41aba2deddf936a8
      bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
      bzrlib/tests/test_info.py      test_info.py-20070320150933-m0xxm1g7xi9v6noe-1
      bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
      bzrlib/tests/test_nonascii.py  testnonascii.py-20051018022645-ea1d8b6477b058a6
      bzrlib/tests/test_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
      bzrlib/tests/test_progress.py  test_progress.py-20060308160359-978c397bc79b7fda
      bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
      bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
      bzrlib/tests/test_revisionnamespaces.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_ssh_transport.py test_ssh_transport.p-20070105153201-f7iq2bosvgjbdgc3-1
      bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
      bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
      bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
      bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
      bzrlib/tests/test_workingtree.py testworkingtree.py-20051004024258-b88d0fe8f101d468
      bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
      bzrlib/tests/workingtree_implementations/test_rename_one.py test_rename_one.py-20070226161242-2d8ibdedl700jgio-1
      bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
      bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
      bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
      bzrlib/transport/memory.py     memory.py-20051016101338-cd008dbdf69f04fc
      bzrlib/transport/ssh.py        ssh.py-20060824042150-0s9787kng6zv1nwq-1
      bzrlib/util/configobj/configobj.py configobj.py-20051018184548-06992a2246425e3e
      bzrlib/util/configobj/docs/BSD-LICENSE.txt BSDLICENSE.txt-20051018184548-29b89ff3102657f5
      bzrlib/util/configobj/docs/configobj.txt configobj.txt-20051018184548-4949b5f17e6a19c7
      bzrlib/util/configobj/docs/validate.txt validate.txt-20051018184548-9e0e5ad913e258f5
      bzrlib/version_info_formats/format_custom.py format_custom.py-20071029100350-ajovqhbpb5khf6gu-1
      bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
      doc/en/user-guide/bazaar_workflows.txt bazaar_workflows.txt-20071114035000-q36a9h57ps06uvnl-1
      doc/en/user-guide/branching_a_project.txt branching_a_project.-20071122141511-0knao2lklsdsvb1q-2
      setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
      tools/win32/bzr.iss.cog        bzr.iss.cog-20060622100836-b3yup582rt3y0nvm-5
    ------------------------------------------------------------
    revno: 3146.8.18
    revision-id:aaron at aaronbentley.com-20080228003628-pjxtmj4qxibbnt8e
    parent: aaron at aaronbentley.com-20080227235013-4wrfby3mq2pfeg8e
    parent: pqm at pqm.ubuntu.com-20080125195940-iwy2onaiiges6k4t
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: no-inventory5
    timestamp: Wed 2008-02-27 19:36:28 -0500
    message:
      Merge with dev
    added:
      bzrlib/tests/repository_implementations/test_has_revisions.py test_has_revisions.p-20080111035443-xaupgdsx5fw1q54b-1
      bzrlib/tests/test_http_implementations.py test_http_implementa-20071218210003-65nh81gglcfvurw6-1
      contrib/bzr_access             bzr_access-20071210163004-c9lb1renhra2ncg0-1
      doc/developers/inventory.txt   inventory.txt-20080103013957-opkrhxy6lmywmx4i-1
      doc/developers/lca-merge.txt   lcamerge.txt-20080103061803-9isydn4ivgwrvorw-1
      doc/en/tutorials/using_bazaar_with_launchpad.txt using_bazaar_with_lp-20071211073140-7msh8uf9a9h4y9hb-1
      doc/en/user-guide/revnos.txt   revnos.txt-20080111231928-pbntxea0ynh9ww1t-1
    renamed:
      bzrlib/tests/HTTPTestUtil.py => bzrlib/tests/http_utils.py HTTPTestUtil.py-20050914180604-247d3aafb7a43343
      bzrlib/tests/HttpServer.py => bzrlib/tests/http_server.py httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      README                         README-20050309040720-8f368abf9f346b9d
      bzr                            bzr.py-20050313053754-5485f144c7006fa6
      bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
      bzrlib/bugtracker.py           bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
      bzrlib/conflicts.py            conflicts.py-20051001061850-78ef952ba63d2b42
      bzrlib/debug.py                debug.py-20061102062349-vdhrw9qdpck8cl35-1
      bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
      bzrlib/doc/api/__init__.py     __init__.py-20051224020744-7b87d590843855bc
      bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
      bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
      bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
      bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
      bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
      bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
      bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
      bzrlib/option.py               option.py-20051014052914-661fb36e76e7362f
      bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
      bzrlib/plugin.py               plugin.py-20050622060424-829b654519533d69
      bzrlib/progress.py             progress.py-20050610070202-df9faaab791964c0
      bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
      bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
      bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
      bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
      bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
      bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
      bzrlib/smart/medium.py         medium.py-20061103051856-rgu2huy59fkz902q-1
      bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
      bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
      bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
      bzrlib/smart/vfs.py            vfs.py-20061108095550-gunadhxmzkdjfeek-2
      bzrlib/symbol_versioning.py    symbol_versioning.py-20060105104851-9ecf8af605d15a80
      bzrlib/tests/TestUtil.py       TestUtil.py-20050824080200-5f70140a2d938694
      bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
      bzrlib/tests/blackbox/test_annotate.py testannotate.py-20051013044000-457f44801bfa9d39
      bzrlib/tests/blackbox/test_diff.py test_diff.py-20060110203741-aa99ac93e633d971
      bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
      bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
      bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
      bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
      bzrlib/tests/blackbox/test_too_much.py blackbox.py-20050620052131-a7370d756399f615
      bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
      bzrlib/tests/branch_implementations/test_http.py test_http.py-20060731224648-2eef7ae5yja95rya-1
      bzrlib/tests/branch_implementations/test_parent.py test_parent.py-20050830052751-5e62766623c32222
      bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
      bzrlib/tests/inventory_implementations/__init__.py __init__.py-20070821044532-olbadbokgv3qv1yd-1
      bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
      bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
      bzrlib/tests/test_annotate.py  test_annotate.py-20061213215015-sttc9agsxomls7q0-1
      bzrlib/tests/test_bundle.py    test.py-20050630184834-092aa401ab9f039c
      bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
      bzrlib/tests/test_conflicts.py test_conflicts.py-20051006031059-e2dad9bbeaa5891f
      bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
      bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
      bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
      bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
      bzrlib/tests/test_http_response.py test_http_response.py-20060628233143-950b2a482a32505d
      bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
      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_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
      bzrlib/tests/test_progress.py  test_progress.py-20060308160359-978c397bc79b7fda
      bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
      bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
      bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
      bzrlib/tests/test_revert.py    test_revert.py-20060828180832-fqb1v6ecpyvnlitj-1
      bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
      bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
      bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
      bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
      bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
      bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
      bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
      bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
      bzrlib/tests/test_tsort.py     testtsort.py-20051025073946-27da871c394d5be4
      bzrlib/tests/test_urlutils.py  test_urlutils.py-20060502192900-46b1f9579987cf9c
      bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
      bzrlib/tests/test_win32utils.py test_win32utils.py-20070713181630-8xsrjymd3e8mgw23-108
      bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
      bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
      bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
      bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
      bzrlib/transport/http/_urllib.py _urlgrabber.py-20060113083826-0bbf7d992fbf090c
      bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
      bzrlib/transport/http/response.py _response.py-20060613154423-a2ci7hd4iw5c7fnt-1
      bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
      bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
      bzrlib/tsort.py                tsort.py-20051025073946-7808f6aaf7d07208
      bzrlib/urlutils.py             urlutils.py-20060502195429-e8a161ecf8fac004
      bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
      bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
      doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
      doc/developers/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
      doc/en/user-guide/bug_trackers.txt bug_trackers.txt-20070713223459-khxdlcudraii95uv-1
      doc/en/user-guide/controlling_registration.txt controlling_registra-20071121073725-0corxykv5irjal00-3
      doc/en/user-guide/core_concepts.txt core_concepts.txt-20071114035000-q36a9h57ps06uvnl-2
      doc/en/user-guide/index.txt    index.txt-20060622101119-tgwtdci8z769bjb9-2
      doc/index.txt                  index.txt-20070813101924-07gd9i9d2jt124bf-1
      tools/rst2html.py              rst2html.py-20060817120932-gn177u8v0008txhu-1
      bzrlib/tests/http_utils.py     HTTPTestUtil.py-20050914180604-247d3aafb7a43343
      bzrlib/tests/http_server.py    httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
    ------------------------------------------------------------
    revno: 3146.8.17
    revision-id:aaron at aaronbentley.com-20080227235013-4wrfby3mq2pfeg8e
    parent: abentley at panoramicfeedback.com-20080103221440-0y6atamnscjnoh9s
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: no-inventory5
    timestamp: Wed 2008-02-27 18:50:13 -0500
    message:
      Change to explicit file_id list
    modified:
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
    ------------------------------------------------------------
    revno: 3146.8.16
    revision-id:abentley at panoramicfeedback.com-20080103221440-0y6atamnscjnoh9s
    parent: aaron.bentley at utoronto.ca-20071231203605-2kp31tw9k4ui5sgw
    committer: Aaron Bentley <abentley at panoramicfeedback.com>
    branch nick: no-inventory5
    timestamp: Thu 2008-01-03 17:14:40 -0500
    message:
      Updates from review
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
      bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
      bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
      bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
      bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3146.8.15
    revision-id:aaron.bentley at utoronto.ca-20071231203605-2kp31tw9k4ui5sgw
    parent: aaron.bentley at utoronto.ca-20071231202953-06fukpgs3zzlssxa
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 15:36:05 -0500
    message:
      Cleanup and docs
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
      bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3146.8.14
    revision-id:aaron.bentley at utoronto.ca-20071231202953-06fukpgs3zzlssxa
    parent: aaron.bentley at utoronto.ca-20071231202858-ha1jk5qyafv7jg2k
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 15:29:53 -0500
    message:
      Remove unused var
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
    ------------------------------------------------------------
    revno: 3146.8.13
    revision-id:aaron.bentley at utoronto.ca-20071231202858-ha1jk5qyafv7jg2k
    parent: aaron.bentley at utoronto.ca-20071231202212-r0q3n2kxb0tvdwyq
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 15:28:58 -0500
    message:
      Clean up code
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
    ------------------------------------------------------------
    revno: 3146.8.12
    revision-id:aaron.bentley at utoronto.ca-20071231202212-r0q3n2kxb0tvdwyq
    parent: aaron.bentley at utoronto.ca-20071231194738-2ucz6alk4jxd4e96
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 15:22:12 -0500
    message:
      Add a flush to rename_one
    modified:
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3146.8.11
    revision-id:aaron.bentley at utoronto.ca-20071231194738-2ucz6alk4jxd4e96
    parent: aaron.bentley at utoronto.ca-20071231192011-t0aj8nilc0t2eio7
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 14:47:38 -0500
    message:
      Fix dirstate/inventory dance, mark dirstate modified and in memory
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3146.8.10
    revision-id:aaron.bentley at utoronto.ca-20071231192011-t0aj8nilc0t2eio7
    parent: aaron.bentley at utoronto.ca-20071231191758-ms44mbfdvym8nomi
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 14:20:11 -0500
    message:
      Clean up some variable names
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
    ------------------------------------------------------------
    revno: 3146.8.9
    revision-id:aaron.bentley at utoronto.ca-20071231191758-ms44mbfdvym8nomi
    parent: aaron.bentley at utoronto.ca-20071231191334-7qxwlt6tk7ds9ugi
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 14:17:58 -0500
    message:
      Fix child execute bit
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
    ------------------------------------------------------------
    revno: 3146.8.8
    revision-id:aaron.bentley at utoronto.ca-20071231191334-7qxwlt6tk7ds9ugi
    parent: aaron.bentley at utoronto.ca-20071231191251-git7fbe9mm2um9gr
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 14:13:34 -0500
    message:
      Remove debug code
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
    ------------------------------------------------------------
    revno: 3146.8.7
    revision-id:aaron.bentley at utoronto.ca-20071231191251-git7fbe9mm2um9gr
    parent: aaron.bentley at utoronto.ca-20071231180920-3fqtecnwuww69tzy
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 14:12:51 -0500
    message:
      Remove unused code
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
    ------------------------------------------------------------
    revno: 3146.8.6
    revision-id:aaron.bentley at utoronto.ca-20071231180920-3fqtecnwuww69tzy
    parent: aaron.bentley at utoronto.ca-20071231161005-3l7s9521wm9zbjxg
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 13:09:20 -0500
    message:
      Get apply_inventory_delta almost working properly
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
    ------------------------------------------------------------
    revno: 3146.8.5
    revision-id:aaron.bentley at utoronto.ca-20071231161005-3l7s9521wm9zbjxg
    parent: aaron.bentley at utoronto.ca-20071231053539-lpxc6wewg2r17bd9
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 11:10:05 -0500
    message:
      Get apply_inventory_delta kinda working, but not children
    modified:
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
      bzrlib/tests/workingtree_implementations/test_inv.py test_inv.py-20070311221604-ighlq8tbn5xq0kuo-1
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3146.8.4
    revision-id:aaron.bentley at utoronto.ca-20071231053539-lpxc6wewg2r17bd9
    parent: aaron.bentley at utoronto.ca-20071230222732-j9b28xdzcksa7e7e
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Mon 2007-12-31 00:35:39 -0500
    message:
      Eliminate direct use of inventory from transform application
    modified:
      bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
      bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
      bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
      bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3146.8.3
    revision-id:aaron.bentley at utoronto.ca-20071230222732-j9b28xdzcksa7e7e
    parent: aaron.bentley at utoronto.ca-20071230222401-mopeude5ha916n1h
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Sun 2007-12-30 17:27:32 -0500
    message:
      Avoid inventory in TT._apply_removals
    modified:
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
    ------------------------------------------------------------
    revno: 3146.8.2
    revision-id:aaron.bentley at utoronto.ca-20071230222401-mopeude5ha916n1h
    parent: aaron.bentley at utoronto.ca-20071230213111-wlv22dbxj7xm9rl2
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Sun 2007-12-30 17:24:01 -0500
    message:
      Introduce iter_all_file_ids, to avoid hitting Inventory for this case
    modified:
      bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
      bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
      bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
      bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
    ------------------------------------------------------------
    revno: 3146.8.1
    revision-id:aaron.bentley at utoronto.ca-20071230213111-wlv22dbxj7xm9rl2
    parent: pqm at pqm.ubuntu.com-20071228175832-9kboqtkemnuzzlab
    committer: Aaron Bentley <aaron.bentley at utoronto.ca>
    branch nick: no-inventory5
    timestamp: Sun 2007-12-30 16:31:11 -0500
    message:
      Fix two tree.inventory uses in checkout
    modified:
      bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
=== modified file 'bzrlib/dirstate.py'
--- a/bzrlib/dirstate.py	2008-02-12 02:14:04 +0000
+++ b/bzrlib/dirstate.py	2008-02-28 01:33:35 +0000
@@ -1166,6 +1166,68 @@
             raise
         return result
 
+    def update_by_delta(self, delta):
+        """Apply an inventory delta to the dirstate for tree 0
+
+        :param delta: An inventory delta.  See Inventory.apply_delta for
+            details.
+        """
+        self._read_dirblocks_if_needed()
+        insertions = {}
+        removals = {}
+        for old_path, new_path, file_id, inv_entry in sorted(delta,
+                                                             reverse=True):
+            assert file_id not in insertions
+            assert file_id not in removals
+            if old_path is not None:
+                old_path = old_path.encode('utf-8')
+                removals[file_id] = old_path
+            if new_path is not None:
+                new_path = new_path.encode('utf-8')
+                dirname, basename = osutils.split(new_path)
+                key = (dirname, basename, file_id)
+                minikind = DirState._kind_to_minikind[inv_entry.kind]
+                if minikind == 't':
+                    fingerprint = inv_entry.reference_revision
+                else:
+                    fingerprint = ''
+                insertions[file_id] = (key, minikind, inv_entry.executable,
+                                       fingerprint, new_path)
+            if None not in (old_path, new_path):
+                for child in self._iter_child_entries(0, old_path):
+                    if child[0][2] in insertions or child[0][2] in removals:
+                        continue
+                    child_dirname = child[0][0]
+                    child_basename = child[0][1]
+                    minikind = child[1][0][0]
+                    fingerprint = child[1][0][4]
+                    executable = child[1][0][3]
+                    old_child_path = osutils.pathjoin(child[0][0],
+                                                      child[0][1])
+                    removals[child[0][2]] = old_child_path
+                    child_suffix = child_dirname[len(old_path):]
+                    new_child_dirname = (new_path + child_suffix)
+                    key = (new_child_dirname, child_basename, child[0][2])
+                    new_child_path = os.path.join(new_child_dirname,
+                                                  child_basename)
+                    insertions[child[0][2]] = (key, minikind, executable,
+                                               fingerprint, new_child_path)
+        self._apply_removals(removals.values())
+        self._apply_insertions(insertions.values())
+
+    def _apply_removals(self, removals):
+        for path in sorted(removals, reverse=True):
+            dirname, basename = osutils.split(path)
+            block_i, entry_i, d_present, f_present = \
+                self._get_block_entry_index(dirname, basename, 0)
+            entry = self._dirblocks[block_i][1][entry_i]
+            self._make_absent(entry)
+
+    def _apply_insertions(self, adds):
+        for key, minikind, executable, fingerprint, path_utf8 in sorted(adds):
+            self.update_minimal(key, minikind, executable, fingerprint,
+                                path_utf8=path_utf8)
+
     def update_basis_by_delta(self, delta, new_revid):
         """Update the parents of this tree after a commit.
 

=== modified file 'bzrlib/osutils.py'
--- a/bzrlib/osutils.py	2008-02-24 16:42:13 +0000
+++ b/bzrlib/osutils.py	2008-02-28 01:33:35 +0000
@@ -149,7 +149,7 @@
     try:
         return _mapper(_lstat(f).st_mode)
     except OSError, e:
-        if getattr(e, 'errno', None) == errno.ENOENT:
+        if getattr(e, 'errno', None) in (errno.ENOENT, errno.ENOTDIR):
             raise errors.NoSuchFile(f)
         raise
 

=== modified file 'bzrlib/tests/tree_implementations/test_tree.py'
--- a/bzrlib/tests/tree_implementations/test_tree.py	2007-08-30 02:02:21 +0000
+++ b/bzrlib/tests/tree_implementations/test_tree.py	2008-01-03 22:14:40 +0000
@@ -121,6 +121,26 @@
         finally:
             tree.unlock()
 
+    def test_all_file_ids(self):
+        work_tree = self.make_branch_and_tree('wt')
+        tree = self.get_tree_no_parents_abc_content(work_tree)
+        tree.lock_read()
+        self.addCleanup(tree.unlock)
+        self.assertEqual(tree.all_file_ids(),
+                         set(['b-id', 'root-id', 'c-id', 'a-id']))
+
+
+class TestStoredKind(TestCaseWithTree):
+
+    def test_stored_kind(self):
+        tree = self.make_branch_and_tree('tree')
+        work_tree = self.make_branch_and_tree('wt')
+        tree = self.get_tree_no_parents_abc_content(work_tree)
+        tree.lock_read()
+        self.addCleanup(tree.unlock)
+        self.assertEqual('file', tree.stored_kind('a-id'))
+        self.assertEqual('directory', tree.stored_kind('b-id'))
+
 
 class TestFileContent(TestCaseWithTree):
 

=== modified file 'bzrlib/tests/workingtree_implementations/test_inv.py'
--- a/bzrlib/tests/workingtree_implementations/test_inv.py	2007-10-03 05:04:42 +0000
+++ b/bzrlib/tests/workingtree_implementations/test_inv.py	2007-12-31 16:10:05 +0000
@@ -78,6 +78,7 @@
         wt.apply_inventory_delta([('foo', 'baz', 'foo-id',
             inventory.InventoryDirectory('foo-id', 'baz', root_id))])
         # foo/bar should have been followed the rename of its parent to baz/bar
+        self.assertEqual('baz', wt.id2path('foo-id'))
         self.assertEqual('baz/bar', wt.id2path('bar-id'))
 
     def test_rename_dir_with_children_with_children(self):

=== modified file 'bzrlib/tests/workingtree_implementations/test_workingtree.py'
--- a/bzrlib/tests/workingtree_implementations/test_workingtree.py	2008-02-24 17:19:56 +0000
+++ b/bzrlib/tests/workingtree_implementations/test_workingtree.py	2008-02-28 01:33:35 +0000
@@ -826,6 +826,17 @@
             expected_kind = names[i]
             self.assertEqual(expected_kind, actual_kind)
 
+    def test_stored_kind_with_missing(self):
+        tree = self.make_branch_and_tree('tree')
+        tree.lock_write()
+        self.addCleanup(tree.unlock)
+        self.build_tree(['tree/a', 'tree/b/'])
+        tree.add(['a', 'b'], ['a-id', 'b-id'])
+        os.unlink('tree/a')
+        os.rmdir('tree/b')
+        self.assertEqual('file', tree.stored_kind('a-id'))
+        self.assertEqual('directory', tree.stored_kind('b-id'))
+
     def test_missing_file_sha1(self):
         """If a file is missing, its sha1 should be reported as None."""
         tree = self.make_branch_and_tree('.')
@@ -865,6 +876,16 @@
             raise TestSkipped('WorkingTree2 is not supported')
         self.assertEqual(case_sensitive, tree.case_sensitive)
 
+    def test_all_file_ids_with_missing(self):
+        tree = self.make_branch_and_tree('tree')
+        tree.lock_write()
+        self.addCleanup(tree.unlock)
+        self.build_tree(['tree/a', 'tree/b'])
+        tree.add(['a', 'b'], ['a-id', 'b-id'])
+        os.unlink('tree/a')
+        self.assertEqual(set(['a-id', 'b-id', tree.get_root_id()]),
+                         tree.all_file_ids())
+
     def test_sprout_hardlink(self):
         source = self.make_branch_and_tree('source')
         self.build_tree(['source/file'])

=== modified file 'bzrlib/transform.py'
--- a/bzrlib/transform.py	2008-02-24 17:40:02 +0000
+++ b/bzrlib/transform.py	2008-02-28 01:38:41 +0000
@@ -250,7 +250,7 @@
         This reflects only files that already exist, not ones that will be
         added by transactions.
         """
-        path = self._tree.inventory.id2path(inventory_id)
+        path = self._tree.id2path(inventory_id)
         return self.trans_id_tree_path(path)
 
     def trans_id_file_id(self, file_id):
@@ -770,8 +770,8 @@
         conflicts = []
         removed_tree_ids = set((self.tree_file_id(trans_id) for trans_id in
                                 self._removed_id))
-        active_tree_ids = set((f for f in self._tree.inventory if
-                               f not in removed_tree_ids))
+        all_ids = self._tree.all_file_ids()
+        active_tree_ids = all_ids.difference(removed_tree_ids)
         for trans_id, file_id in self._new_id.iteritems():
             if file_id in active_tree_ids:
                 old_trans_id = self.trans_id_tree_file_id(file_id)
@@ -1186,7 +1186,6 @@
             conflicts = self.find_conflicts()
             if len(conflicts) != 0:
                 raise MalformedTransform(conflicts=conflicts)
-        inv = self._tree.inventory
         inventory_delta = []
         child_pb = bzrlib.ui.ui_factory.nested_progress_bar()
         try:
@@ -1196,10 +1195,9 @@
                 mover = _mover
             try:
                 child_pb.update('Apply phase', 0, 2)
-                self._apply_removals(inv, inventory_delta, mover)
+                self._apply_removals(inventory_delta, mover)
                 child_pb.update('Apply phase', 1, 2)
-                modified_paths = self._apply_insertions(inv, inventory_delta,
-                                                        mover)
+                modified_paths = self._apply_insertions(inventory_delta, mover)
             except:
                 mover.rollback()
                 raise
@@ -1212,7 +1210,7 @@
         self.finalize()
         return _TransformResults(modified_paths, self.rename_count)
 
-    def _apply_removals(self, inv, inventory_delta, mover):
+    def _apply_removals(self, inventory_delta, mover):
         """Perform tree operations that remove directory/inventory names.
 
         That is, delete files that are to be deleted, and put any files that
@@ -1244,12 +1242,15 @@
                         file_id = self._tree.get_root_id()
                     else:
                         file_id = self.tree_file_id(trans_id)
-                    if file_id is not None:
-                        inventory_delta.append((path, None, file_id, None))
+                    assert file_id is not None
+                    # File-id isn't really being deleted, just moved
+                    if file_id in self._r_new_id:
+                        continue
+                    inventory_delta.append((path, None, file_id, None))
         finally:
             child_pb.finished()
 
-    def _apply_insertions(self, inv, inventory_delta, mover):
+    def _apply_insertions(self, inventory_delta, mover):
         """Perform tree operations that insert directory/inventory names.
 
         That is, create any files that need to be created, and restore from
@@ -1264,10 +1265,6 @@
             for num, (path, trans_id) in enumerate(new_paths):
                 new_entry = None
                 child_pb.update('adding file', num, len(new_paths))
-                try:
-                    kind = self._new_contents[trans_id]
-                except KeyError:
-                    kind = contents = None
                 if trans_id in self._new_contents or \
                     self.path_changed(trans_id):
                     full_path = self._tree.abspath(path)
@@ -1283,13 +1280,17 @@
                     if trans_id in self._new_contents:
                         modified_paths.append(full_path)
                         completed_new.append(trans_id)
-
-                if trans_id in self._new_id:
-                    if kind is None:
-                        kind = file_kind(self._tree.abspath(path))
+                file_id = self.final_file_id(trans_id)
+                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):
+                    try:
+                        kind = self.final_kind(trans_id)
+                    except NoSuchFile:
+                        kind = self._tree.stored_kind(file_id)
                     if trans_id in self._new_reference_revision:
                         new_entry = inventory.TreeReference(
-                            self._new_id[trans_id],
+                            self.final_file_id(trans_id),
                             self._new_name[trans_id],
                             self.final_file_id(self._new_parent[trans_id]),
                             None, self._new_reference_revision[trans_id])
@@ -1297,34 +1298,16 @@
                         new_entry = inventory.make_entry(kind,
                             self.final_name(trans_id),
                             self.final_file_id(self.final_parent(trans_id)),
-                            self._new_id[trans_id])
-                else:
-                    if trans_id in self._new_name or trans_id in\
-                        self._new_parent or\
-                        trans_id in self._new_executability:
-                        file_id = self.final_file_id(trans_id)
-                        if file_id is not None:
-                            entry = inv[file_id]
-                            new_entry = entry.copy()
-
-                    if trans_id in self._new_name or trans_id in\
-                        self._new_parent:
-                            if new_entry is not None:
-                                new_entry.name = self.final_name(trans_id)
-                                parent = self.final_parent(trans_id)
-                                parent_id = self.final_file_id(parent)
-                                new_entry.parent_id = parent_id
+                            self.final_file_id(trans_id))
+                    try:
+                        old_path = self._tree.id2path(new_entry.file_id)
+                    except errors.NoSuchId:
+                        old_path = None
+                    inventory_delta.append((old_path, path, new_entry.file_id,
+                                            new_entry))
 
                 if trans_id in self._new_executability:
                     self._set_executability(path, new_entry, trans_id)
-                if new_entry is not None:
-                    if new_entry.file_id in inv:
-                        old_path = inv.id2path(new_entry.file_id)
-                    else:
-                        old_path = None
-                    inventory_delta.append((old_path, path,
-                                            new_entry.file_id,
-                                            new_entry))
         finally:
             child_pb.finished()
         for trans_id in completed_new:
@@ -1520,8 +1503,9 @@
 
 def _build_tree(tree, wt, accelerator_tree, hardlink):
     """See build_tree."""
-    if len(wt.inventory) > 1:  # more than just a root
-        raise errors.WorkingTreeAlreadyPopulated(base=wt.basedir)
+    for num, _unused in enumerate(wt.all_file_ids()):
+        if num > 0:  # more than just a root
+            raise errors.WorkingTreeAlreadyPopulated(base=wt.basedir)
     file_trans_id = {}
     top_pb = bzrlib.ui.ui_factory.nested_progress_bar()
     pp = ProgressPhase("Build phase", 2, top_pb)
@@ -2056,7 +2040,8 @@
             new_parent_id = tt.new_directory(parent_name + '.new',
                 parent_parent, parent_file_id)
             _reparent_transform_children(tt, parent_id, new_parent_id)
-            tt.unversion_file(parent_id)
+            if parent_file_id is not None:
+                tt.unversion_file(parent_id)
             new_conflicts.add((c_type, 'Created directory', new_parent_id))
     return new_conflicts
 

=== modified file 'bzrlib/tree.py'
--- a/bzrlib/tree.py	2007-12-28 20:10:14 +0000
+++ b/bzrlib/tree.py	2008-02-28 00:36:28 +0000
@@ -145,6 +145,10 @@
     def __iter__(self):
         return iter(self.inventory)
 
+    def all_file_ids(self):
+        """Iterate through all file ids, including ids for missing files."""
+        return set(self.inventory)
+
     def id2path(self, file_id):
         """Return the path for a file id.
 
@@ -185,6 +189,14 @@
         raise NotImplementedError("Tree subclass %s must implement kind"
             % self.__class__.__name__)
 
+    def stored_kind(self, file_id):
+        """File kind stored for this file_id.
+
+        May not match kind on disk for working trees.  Always available
+        for versioned files, even when the file itself is missing.
+        """
+        return self.kind(file_id)
+
     def path_content_summary(self, path):
         """Get a summary of the information about path.
         

=== modified file 'bzrlib/workingtree.py'
--- a/bzrlib/workingtree.py	2008-02-24 16:42:13 +0000
+++ b/bzrlib/workingtree.py	2008-02-28 01:33:35 +0000
@@ -389,6 +389,10 @@
             if osutils.lexists(self.abspath(path)):
                 yield ie.file_id
 
+    def all_file_ids(self):
+        """See Tree.iter_all_file_ids"""
+        return set(self.inventory)
+
     def __repr__(self):
         return "<%s of %s>" % (self.__class__.__name__,
                                getattr(self, 'basedir', None))
@@ -1698,6 +1702,10 @@
     def kind(self, file_id):
         return file_kind(self.id2abspath(file_id))
 
+    def stored_kind(self, file_id):
+        """See Tree.stored_kind"""
+        return self.inventory[file_id].kind
+
     def _comparison_data(self, entry, path):
         abspath = self.abspath(path)
         try:

=== modified file 'bzrlib/workingtree_4.py'
--- a/bzrlib/workingtree_4.py	2008-02-24 17:19:56 +0000
+++ b/bzrlib/workingtree_4.py	2008-02-28 01:33:35 +0000
@@ -500,6 +500,16 @@
             mode = os.lstat(self.abspath(path)).st_mode
             return bool(stat.S_ISREG(mode) and stat.S_IEXEC & mode)
 
+    def all_file_ids(self):
+        """See Tree.iter_all_file_ids"""
+        self._must_be_locked()
+        result = set()
+        for key, tree_details in self.current_dirstate()._iter_entries():
+            if tree_details[0][0] in ('a', 'r'): # relocated
+                continue
+            result.add(key[2])
+        return result
+
     @needs_read_lock
     def __iter__(self):
         """Iterate through file_ids for this tree.
@@ -1215,6 +1225,19 @@
             for file_id in file_ids:
                 self._inventory.remove_recursive_id(file_id)
 
+    @needs_tree_write_lock
+    def rename_one(self, from_rel, to_rel, after=False):
+        """See WorkingTree.rename_one"""
+        self.flush()
+        WorkingTree.rename_one(self, from_rel, to_rel, after)
+
+    @needs_tree_write_lock
+    def apply_inventory_delta(self, changes):
+        """See MutableTree.apply_inventory_delta"""
+        state = self.current_dirstate()
+        state.update_by_delta(changes)
+        self._make_dirty(reset_inventory=True)
+
     def update_basis_by_delta(self, new_revid, delta):
         """See MutableTree.update_basis_by_delta."""
         assert self.last_revision() != new_revid
@@ -1607,6 +1630,10 @@
             raise errors.NoSuchId(tree=self, file_id=file_id)
         return dirstate.DirState._minikind_to_kind[entry[1][0]]
 
+    def stored_kind(self, file_id):
+        """See Tree.stored_kind"""
+        return self.kind(file_id)
+
     def path_content_summary(self, path):
         """See Tree.path_content_summary."""
         id = self.inventory.path2id(path)




More information about the bazaar-commits mailing list