Rev 2784: Merge bzr.dev in http://people.ubuntu.com/~robertc/baz2.0/repository

Robert Collins robertc at robertcollins.net
Tue Sep 25 22:42:41 BST 2007


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

------------------------------------------------------------
revno: 2784
revision-id: robertc at robertcollins.net-20070925214206-vvvlpk1ucjpkd0ig
parent: robertc at robertcollins.net-20070925055346-pbpuxhgnnyas1i9q
parent: pqm at pqm.ubuntu.com-20070925205148-yd27v1odc65uql59
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Wed 2007-09-26 07:42:06 +1000
message:
  Merge bzr.dev
modified:
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
  bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
  bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
  bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
  bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
  bzrlib/tests/blackbox/test_revert.py test_revert.py-20060124160917-485ce9de629c182c
  bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
  bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
  bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
  bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
  bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.40
    revision-id: pqm at pqm.ubuntu.com-20070925205148-yd27v1odc65uql59
    parent: pqm at pqm.ubuntu.com-20070925201921-vjahqpm8bfx6bbvn
    parent: bialix at ukr.net-20070925193251-tyn89934php66ney
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2007-09-25 21:51:48 +0100
    message:
      separate word (dev/candidate) in version info with dots
    modified:
      bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.37.1.1
        revision-id: bialix at ukr.net-20070925193251-tyn89934php66ney
        parent: pqm at pqm.ubuntu.com-20070925092014-7t2piu8gmm5hvbks
        parent: bialix at ukr.net-20070913093037-n8bp84n8kcifkvqu
        committer: Alexander Belchenko <bialix at ukr.net>
        branch nick: dotted.version.info
        timestamp: Tue 2007-09-25 22:32:51 +0300
        message:
          merge with bzr.dev
        modified:
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.9.3.1
        revision-id: bialix at ukr.net-20070913093037-n8bp84n8kcifkvqu
        parent: pqm at pqm.ubuntu.com-20070911055622-a3060rj7l0iy38l2
        committer: Alexander Belchenko <bialix at ukr.net>
        branch nick: dotted.version
        timestamp: Thu 2007-09-13 12:30:37 +0300
        message:
          separate word (dev/candidate) in version info with dots
        modified:
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.39
    revision-id: pqm at pqm.ubuntu.com-20070925201921-vjahqpm8bfx6bbvn
    parent: pqm at pqm.ubuntu.com-20070925194602-h8z36snrc8eqjj4j
    parent: bialix at ukr.net-20070925192314-emlzeasnptqpvd1b
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2007-09-25 21:19:21 +0100
    message:
      test for bug #140419 
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.8.2.4
        revision-id: bialix at ukr.net-20070925192314-emlzeasnptqpvd1b
        parent: bialix at ukr.net-20070925191741-u1ak81l763dsym0w
        parent: pqm at pqm.ubuntu.com-20070925092014-7t2piu8gmm5hvbks
        committer: Alexander Belchenko <bialix at ukr.net>
        branch nick: bugtest.140419
        timestamp: Tue 2007-09-25 22:23:14 +0300
        message:
          merge bzr.dev
        added:
          bzrlib/tests/tree_implementations/test_path_content_summary.py test_path_content_su-20070904100855-3vrwedz6akn34kl5-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
          bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/info.py                 info.py-20050323235939-6bbfe7d9700b0b9b
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/multiparent.py          __init__.py-20070410133617-n1jdhcc1n1mibarp-1
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
          bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
          bzrlib/tests/blackbox/test_reconfigure.py test_reconfigure.py-20070908173426-khfo5fi2rgzgtwj3-1
          bzrlib/tests/blackbox/test_revert.py test_revert.py-20060124160917-485ce9de629c182c
          bzrlib/tests/blackbox/test_too_much.py blackbox.py-20050620052131-a7370d756399f615
          bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
          bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
          bzrlib/tests/repository_implementations/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
          bzrlib/tests/test_bundle.py    test.py-20050630184834-092aa401ab9f039c
          bzrlib/tests/test_info.py      test_info.py-20070320150933-m0xxm1g7xi9v6noe-1
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/tests/test_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
          bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
          bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
          bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
          bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
          bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
          bzrlib/transport/local.py      local_transport.py-20050711165921-9b1f142bfe480c24
          bzrlib/transport/memory.py     memory.py-20051016101338-cd008dbdf69f04fc
          bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.8.2.3
        revision-id: bialix at ukr.net-20070925191741-u1ak81l763dsym0w
        parent: bialix at ukr.net-20070922172916-yzl05wpf8ye852gw
        committer: Alexander Belchenko <bialix at ukr.net>
        branch nick: bugtest.140419
        timestamp: Tue 2007-09-25 22:17:41 +0300
        message:
          typo
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.8.2.2
        revision-id: bialix at ukr.net-20070922172916-yzl05wpf8ye852gw
        parent: bialix at ukr.net-20070920093025-cy85a36ry1xad131
        parent: pqm at pqm.ubuntu.com-20070921081743-jhdchcp1wiwmw0jv
        committer: Alexander Belchenko <bialix at ukr.net>
        branch nick: bugtest.140419
        timestamp: Sat 2007-09-22 20:29:16 +0300
        message:
          Bug #140419 fixed by Robert Collins
        added:
          doc/developers/authentication-ring.txt authring.txt-20070718200437-q5tdik0ne6lor86d-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/annotate.py             annotate.py-20050922133147-7c60541d2614f022
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/tests/HttpServer.py     httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
          bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
          bzrlib/tests/blackbox/test_exceptions.py test_exceptions.py-20060604211237-yi2cxg0ose3xk4id-1
          bzrlib/tests/interversionedfile_implementations/test_join.py test_join.py-20060302012326-9b5e9b0f0a03fedc
          bzrlib/tests/inventory_implementations/basics.py basics.py-20070903044446-kdjwbiu1p1zi9phs-1
          bzrlib/tests/repository_implementations/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
          bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
          bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
          bzrlib/tests/test_weave.py     testknit.py-20050627023648-9833cc5562ffb785
          bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-1
          bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
          bzrlib/tests/workingtree_implementations/test_rename_one.py test_rename_one.py-20070226161242-2d8ibdedl700jgio-1
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/tuned_gzip.py           tuned_gzip.py-20060407014720-5aadc518e928e8d2
          bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
          bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.8.2.1
        revision-id: bialix at ukr.net-20070920093025-cy85a36ry1xad131
        parent: pqm at pqm.ubuntu.com-20070919101753-4e8wasie12tewyjv
        committer: Alexander Belchenko <bialix at ukr.net>
        branch nick: bugtest.140419
        timestamp: Thu 2007-09-20 12:30:25 +0300
        message:
          XFAIL test for bug #140419
        modified:
          bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.38
    revision-id: pqm at pqm.ubuntu.com-20070925194602-h8z36snrc8eqjj4j
    parent: pqm at pqm.ubuntu.com-20070925092014-7t2piu8gmm5hvbks
    parent: bialix at ukr.net-20070925190431-latvmyau7wq0ny90
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2007-09-25 20:46:02 +0100
    message:
      option -c for merge command (bialix,r=ian)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.14.5.3
        revision-id: bialix at ukr.net-20070925190431-latvmyau7wq0ny90
        parent: bialix at ukr.net-20070925190148-otovr0vsac3h9nps
        parent: pqm at pqm.ubuntu.com-20070925092014-7t2piu8gmm5hvbks
        committer: Alexander Belchenko <bialix at ukr.net>
        branch nick: merge.--changes
        timestamp: Tue 2007-09-25 22:04:31 +0300
        message:
          merge bzr.dev
        added:
          bzrlib/tests/tree_implementations/test_path_content_summary.py test_path_content_su-20070904100855-3vrwedz6akn34kl5-1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
          bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/info.py                 info.py-20050323235939-6bbfe7d9700b0b9b
          bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/multiparent.py          __init__.py-20070410133617-n1jdhcc1n1mibarp-1
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
          bzrlib/tests/blackbox/test_exceptions.py test_exceptions.py-20060604211237-yi2cxg0ose3xk4id-1
          bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
          bzrlib/tests/blackbox/test_reconfigure.py test_reconfigure.py-20070908173426-khfo5fi2rgzgtwj3-1
          bzrlib/tests/blackbox/test_revert.py test_revert.py-20060124160917-485ce9de629c182c
          bzrlib/tests/blackbox/test_too_much.py blackbox.py-20050620052131-a7370d756399f615
          bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
          bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
          bzrlib/tests/inventory_implementations/basics.py basics.py-20070903044446-kdjwbiu1p1zi9phs-1
          bzrlib/tests/repository_implementations/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
          bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
          bzrlib/tests/test_bundle.py    test.py-20050630184834-092aa401ab9f039c
          bzrlib/tests/test_info.py      test_info.py-20070320150933-m0xxm1g7xi9v6noe-1
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
          bzrlib/tests/test_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
          bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
          bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
          bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
          bzrlib/tests/test_workingtree_4.py test_workingtree_4.p-20070223025758-531n3tznl3zacv2o-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_rename_one.py test_rename_one.py-20070226161242-2d8ibdedl700jgio-1
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
          bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
          bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
          bzrlib/transport/local.py      local_transport.py-20050711165921-9b1f142bfe480c24
          bzrlib/transport/memory.py     memory.py-20051016101338-cd008dbdf69f04fc
          bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
          bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
          bzrlib/tuned_gzip.py           tuned_gzip.py-20060407014720-5aadc518e928e8d2
          bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.14.5.2
        revision-id: bialix at ukr.net-20070925190148-otovr0vsac3h9nps
        parent: bialix at ukr.net-20070922175238-utwpezl628vcusbl
        committer: Alexander Belchenko <bialix at ukr.net>
        branch nick: merge.--changes
        timestamp: Tue 2007-09-25 22:01:48 +0300
        message:
          tweaks suggested by Ian
        modified:
          bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.14.5.1
        revision-id: bialix at ukr.net-20070922175238-utwpezl628vcusbl
        parent: pqm at pqm.ubuntu.com-20070920125023-upjqmzln7mjtvj1h
        committer: Alexander Belchenko <bialix at ukr.net>
        branch nick: merge.--changes
        timestamp: Sat 2007-09-22 20:52:38 +0300
        message:
          add -c option to merge command
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.37
    revision-id: pqm at pqm.ubuntu.com-20070925092014-7t2piu8gmm5hvbks
    parent: pqm at pqm.ubuntu.com-20070925083651-rthie4089wg1wf6o
    parent: robertc at robertcollins.net-20070925084129-ca0kd25h23dmunrs
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2007-09-25 10:20:14 +0100
    message:
      (robertc) Introduce new method Tree.path_content_summary for use in commit refactoring. (Robert Collins)
    added:
      bzrlib/tests/tree_implementations/test_path_content_summary.py test_path_content_su-20070904100855-3vrwedz6akn34kl5-1
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
      bzrlib/tests/tree_implementations/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
      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: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.38.1.2
        revision-id: robertc at robertcollins.net-20070925084129-ca0kd25h23dmunrs
        parent: robertc at robertcollins.net-20070925055031-ybtg84jah7lei4gc
        committer: Robert Collins <robertc at robertcollins.net>
        branch nick: workingtree
        timestamp: Tue 2007-09-25 18:41:29 +1000
        message:
          Review feedback.
        modified:
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.36
    revision-id: pqm at pqm.ubuntu.com-20070925083651-rthie4089wg1wf6o
    parent: pqm at pqm.ubuntu.com-20070925080109-vqlnacer5iwwmxm8
    parent: robertc at robertcollins.net-20070925070807-5chbtkqectn8exun
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2007-09-25 09:36:51 +0100
    message:
      (robertc) Trivial update for bundle v4 serializers install method to use write groups. (Robert Collins)
    modified:
      bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.31.1.2
        revision-id: robertc at robertcollins.net-20070925070807-5chbtkqectn8exun
        parent: robertc at robertcollins.net-20070925030942-dt0leks0l5j34r0n
        committer: Robert Collins <robertc at robertcollins.net>
        branch nick: bundle
        timestamp: Tue 2007-09-25 17:08:07 +1000
        message:
          Review feedback.
        modified:
          bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.31.1.1
        revision-id: robertc at robertcollins.net-20070925030942-dt0leks0l5j34r0n
        parent: pqm at pqm.ubuntu.com-20070925020712-sf3qg1j3wh0l0hz8
        committer: Robert Collins <robertc at robertcollins.net>
        branch nick: bundle
        timestamp: Tue 2007-09-25 13:09:42 +1000
        message:
          (robertc) Trivial update for bundle v4 serializers install method to use write groups. (Robert Collins)
        modified:
          bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.35
    revision-id: pqm at pqm.ubuntu.com-20070925080109-vqlnacer5iwwmxm8
    parent: pqm at pqm.ubuntu.com-20070925072846-g54nzuhu1b5n3xyn
    parent: ian.clatworthy at internode.on.net-20070925064345-o8jx2jhis3zh0x9s
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2007-09-25 09:01:09 +0100
    message:
      Joining of annotated and plain knits (Ian Clatworthy)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
      bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
      bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.33.1.1
        revision-id: ian.clatworthy at internode.on.net-20070925064345-o8jx2jhis3zh0x9s
        parent: pqm at pqm.ubuntu.com-20070925041614-j2r43hi8rhw9ci4k
        parent: ian.clatworthy at internode.on.net-20070925064104-gdj0iea73g9iy24i
        committer: Ian Clatworthy <ian.clatworthy at internode.on.net>
        branch nick: ianc-integration2
        timestamp: Tue 2007-09-25 16:43:45 +1000
        message:
          Joining of annotated and plain knits (Ian Clatworthy)
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.26.4.6
        revision-id: ian.clatworthy at internode.on.net-20070925064104-gdj0iea73g9iy24i
        parent: ian.clatworthy at internode.on.net-20070925053912-o5wat48zhxc3q5r9
        committer: Ian Clatworthy <ian.clatworthy at internode.on.net>
        branch nick: bzr.knit-pack-joins
        timestamp: Tue 2007-09-25 16:41:04 +1000
        message:
          review tweaks
        modified:
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.26.4.5
        revision-id: ian.clatworthy at internode.on.net-20070925053912-o5wat48zhxc3q5r9
        parent: ian.clatworthy at internode.on.net-20070925053538-efa084hz0ejvgh21
        committer: Ian Clatworthy <ian.clatworthy at internode.on.net>
        branch nick: bzr.knit-pack-joins
        timestamp: Tue 2007-09-25 15:39:12 +1000
        message:
          Update NEWS
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.26.4.4
        revision-id: ian.clatworthy at internode.on.net-20070925053538-efa084hz0ejvgh21
        parent: ian.clatworthy at internode.on.net-20070925053507-pcgw7jrgdggp2mq8
        parent: pqm at pqm.ubuntu.com-20070925020712-sf3qg1j3wh0l0hz8
        committer: Ian Clatworthy <ian.clatworthy at internode.on.net>
        branch nick: bzr.knit-pack-joins
        timestamp: Tue 2007-09-25 15:35:38 +1000
        message:
          merge bzr.dev
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
          bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_too_much.py blackbox.py-20050620052131-a7370d756399f615
          bzrlib/tests/test_bundle.py    test.py-20050630184834-092aa401ab9f039c
          bzrlib/tests/test_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
          bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
          bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
          bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
          bzrlib/transport/local.py      local_transport.py-20050711165921-9b1f142bfe480c24
          bzrlib/transport/memory.py     memory.py-20051016101338-cd008dbdf69f04fc
          bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.26.4.3
        revision-id: ian.clatworthy at internode.on.net-20070925053507-pcgw7jrgdggp2mq8
        parent: ian.clatworthy at internode.on.net-20070925045420-33ld2lbxqqwq87fi
        committer: Ian Clatworthy <ian.clatworthy at internode.on.net>
        branch nick: bzr.knit-pack-joins
        timestamp: Tue 2007-09-25 15:35:07 +1000
        message:
          fix up plain-to-annotated knit conversion
        modified:
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.26.4.2
        revision-id: ian.clatworthy at internode.on.net-20070925045420-33ld2lbxqqwq87fi
        parent: ian.clatworthy at internode.on.net-20070924131621-19n00l12199eklzp
        committer: Ian Clatworthy <ian.clatworthy at internode.on.net>
        branch nick: bzr.knit-pack-joins
        timestamp: Tue 2007-09-25 14:54:20 +1000
        message:
          use factory methods in annotated-to-plain conversion instead of duplicating format knowledge
        modified:
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.26.4.1
        revision-id: ian.clatworthy at internode.on.net-20070924131621-19n00l12199eklzp
        parent: pqm at pqm.ubuntu.com-20070924042807-nfjwj1voh6a8zddf
        committer: Ian Clatworthy <ian.clatworthy at internode.on.net>
        branch nick: bzr.knit-pack-joins
        timestamp: Mon 2007-09-24 23:16:21 +1000
        message:
          Support joining plain knits to annotated knits and vice versa
        modified:
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.34
    revision-id: pqm at pqm.ubuntu.com-20070925072846-g54nzuhu1b5n3xyn
    parent: pqm at pqm.ubuntu.com-20070925041614-j2r43hi8rhw9ci4k
    parent: mbp at sourcefrog.net-20070924060049-016r89ialgbf886s
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2007-09-25 08:28:46 +0100
    message:
      Add unit test for _rollover_trace_maybe
    modified:
      bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
      bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.26.3.1
        revision-id: mbp at sourcefrog.net-20070924060049-016r89ialgbf886s
        parent: pqm at pqm.ubuntu.com-20070924042807-nfjwj1voh6a8zddf
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: logfile-rollover
        timestamp: Mon 2007-09-24 16:00:49 +1000
        message:
          Add unit test for _rollover_trace_maybe
        modified:
          bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
          bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.33
    revision-id: pqm at pqm.ubuntu.com-20070925041614-j2r43hi8rhw9ci4k
    parent: pqm at pqm.ubuntu.com-20070925032108-y6nxt0xmghqldn4g
    parent: robertc at robertcollins.net-20070925033629-2wx6ibqr3zyjkswx
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2007-09-25 05:16:14 +0100
    message:
      (robertc) Move more weave orientated code out of Repository to weaverepo.py. (Robert Collins)
    modified:
      bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
      bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.25.3.2
        revision-id: robertc at robertcollins.net-20070925033629-2wx6ibqr3zyjkswx
        parent: robertc at robertcollins.net-20070923222217-n7494b41iceeik08
        committer: Robert Collins <robertc at robertcollins.net>
        branch nick: pack-support
        timestamp: Tue 2007-09-25 13:36:29 +1000
        message:
          Review feedback.
        modified:
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
        ------------------------------------------------------------
        revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.25.3.1
        revision-id: robertc at robertcollins.net-20070923222217-n7494b41iceeik08
        parent: pqm at pqm.ubuntu.com-20070923210826-t3ymvo1l68z96in1
        committer: Robert Collins <robertc at robertcollins.net>
        branch nick: pack-support
        timestamp: Mon 2007-09-24 08:22:17 +1000
        message:
          Move various weave specific code out of the base Repository class to weaverepo.py.
        modified:
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.32
    revision-id: pqm at pqm.ubuntu.com-20070925032108-y6nxt0xmghqldn4g
    parent: pqm at pqm.ubuntu.com-20070925020712-sf3qg1j3wh0l0hz8
    parent: mbp at sourcefrog.net-20070924051837-6qvnc9tca3y4xflp
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Tue 2007-09-25 04:21:08 +0100
    message:
      Add revert --forget-merges
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/tests/blackbox/test_revert.py test_revert.py-20060124160917-485ce9de629c182c
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.18.1.9.1.2.1.12.1.8.1.26.2.1
    revision-id: mbp at sourcefrog.net-20070924051837-6qvnc9tca3y4xflp
    parent: pqm at pqm.ubuntu.com-20070924042807-nfjwj1voh6a8zddf
    committer: Martin Pool <mbp at sourcefrog.net>
    branch nick: forget-merges
    timestamp: Mon 2007-09-24 15:18:37 +1000
    message:
      Add revert --forget-merges
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/tests/blackbox/test_revert.py test_revert.py-20060124160917-485ce9de629c182c
=== modified file 'NEWS'
--- a/NEWS	2007-09-25 04:34:15 +0000
+++ b/NEWS	2007-09-25 21:42:06 +0000
@@ -25,7 +25,10 @@
 
   FEATURES:
 
-   * New ``reconfigure`` command (Aaron Bentley)
+   * New ``reconfigure`` command. (Aaron Bentley)
+
+   * New ``revert --forget-merges`` command, which removes the record of a pending 
+     merge without affecting the working tree contents.  (Martin Pool)
 
   PERFORMANCE:
 
@@ -54,6 +57,9 @@
    * Mutt is now a supported mail client; set ``mail_client=mutt`` in your
      bazaar.conf and ``send`` will use mutt. (Keir Mierle)
 
+   * New option ``-c``/``--change`` for ``merge`` command for cherrypicking 
+     changes from one revision. (Alexander Belchenko, #141368)
+
    * Show encodings, locale and list of plugins in the traceback message.
      (Martin Pool, #63894)
 
@@ -70,7 +76,10 @@
      paramiko.
      (Vincent Ladeuil, #59150)
 
-   * Fix commit ordering in corner case (Aaron Bentley, #94975)
+   * Fix commit ordering in corner case. (Aaron Bentley, #94975)
+
+   * Fix long standing bug in partial commit when there are renames 
+     left in tree. (Robert Collins, #140419)
 
    * Fix selftest semi-random noise during http related tests.
      (Vincent Ladeuil, #140614)
@@ -140,6 +149,9 @@
      paths from the root down to each element of selected_file_ids are
      returned. (Robert Collins)
 
+   * Knit joining has been enhanced to support plain to annotated conversion
+     and annotated to plain conversion. (Ian Clatworthy)
+
   TESTING:
 
 
@@ -419,6 +431,10 @@
      incremental addition of data to a file without requiring that all the
      data be buffered in memory. (Robert Collins)
 
+   * New method on ``bzrlib.tree.Tree`` ``path_content_summary`` provides a
+     tuple containing the key information about a path for commit processing
+     to complete. (Robert Collins)
+
    * New methods on ``bzrlib.knit.KnitVersionedFile``:
      ``get_data_stream(versions)``, ``insert_data_stream(stream)`` and
      ``get_format_signature()``.  These provide some infrastructure for

=== modified file 'bzrlib/__init__.py'
--- a/bzrlib/__init__.py	2007-09-12 01:29:21 +0000
+++ b/bzrlib/__init__.py	2007-09-25 19:32:51 +0000
@@ -43,7 +43,7 @@
 if version_info[3] == 'final':
     version_string = '%d.%d.%d' % version_info[:3]
 else:
-    version_string = '%d.%d.%d%s%d' % version_info
+    version_string = '%d.%d.%d.%s.%d' % version_info
 __version__ = version_string
 
 # allow bzrlib plugins to be imported.

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2007-09-24 11:05:05 +0000
+++ b/bzrlib/builtins.py	2007-09-25 19:04:31 +0000
@@ -2701,6 +2701,7 @@
     _see_also = ['update', 'remerge', 'status-flags']
     takes_args = ['branch?']
     takes_options = [
+        'change',
         'revision',
         Option('force',
                help='Merge even if the destination tree has uncommitted changes.'),
@@ -3048,19 +3049,24 @@
 
     _see_also = ['cat', 'export']
     takes_options = [
-            'revision',
-            Option('no-backup', "Do not save backups of reverted files."),
-            ]
+        'revision',
+        Option('no-backup', "Do not save backups of reverted files."),
+        Option('forget-merges',
+               'Remove pending merge marker, without changing any files.'),
+        ]
     takes_args = ['file*']
 
-    def run(self, revision=None, no_backup=False, file_list=None):
-        if file_list is not None:
-            if len(file_list) == 0:
-                raise errors.BzrCommandError("No files specified")
-        
+    def run(self, revision=None, no_backup=False, file_list=None,
+            forget_merges=None):
         tree, file_list = tree_files(file_list)
+        if forget_merges:
+            tree.set_parent_ids(tree.get_parent_ids()[:1])
+        else:
+            self._revert_tree_to_revision(tree, revision, file_list, no_backup)
+
+    @staticmethod
+    def _revert_tree_to_revision(tree, revision, file_list, no_backup):
         if revision is None:
-            # FIXME should be tree.last_revision
             rev_id = tree.last_revision()
         elif len(revision) != 1:
             raise errors.BzrCommandError('bzr revert --revision takes exactly 1 argument')
@@ -3068,7 +3074,7 @@
             rev_id = revision[0].in_history(tree.branch).rev_id
         pb = ui.ui_factory.nested_progress_bar()
         try:
-            tree.revert(file_list, 
+            tree.revert(file_list,
                         tree.branch.repository.revision_tree(rev_id),
                         not no_backup, pb, report_changes=True)
         finally:

=== modified file 'bzrlib/bundle/serializer/v4.py'
--- a/bzrlib/bundle/serializer/v4.py	2007-08-28 08:17:05 +0000
+++ b/bzrlib/bundle/serializer/v4.py	2007-09-25 21:42:06 +0000
@@ -472,14 +472,14 @@
         """
         self._repository.start_write_group()
         try:
-            result = self._install_in_group()
+            result = self._install_in_write_group()
         except:
             self._repository.abort_write_group()
             raise
         self._repository.commit_write_group()
         return result
 
-    def _install_in_group(self):
+    def _install_in_write_group(self):
         current_file = None
         current_versionedfile = None
         pending_file_records = []

=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py	2007-09-24 05:54:25 +0000
+++ b/bzrlib/knit.py	2007-09-25 21:42:06 +0000
@@ -254,7 +254,7 @@
     def parse_line_delta_iter(self, lines):
         return iter(self.parse_line_delta(lines))
 
-    def parse_line_delta(self, lines, version_id):
+    def parse_line_delta(self, lines, version_id, plain=False):
         """Convert a line based delta into internal representation.
 
         line delta is in the form of:
@@ -263,6 +263,10 @@
         revid(utf8) newline\n
         internal representation is
         (start, end, count, [1..count tuples (revid, newline)])
+
+        :param plain: If True, the lines are returned as a plain
+            list, not as a list of tuples, i.e.
+            (start, end, count, [1..count newline])
         """
         result = []
         lines = iter(lines)
@@ -274,10 +278,18 @@
             return cache.setdefault(origin, origin), text
 
         # walk through the lines parsing.
-        for header in lines:
-            start, end, count = [int(n) for n in header.split(',')]
-            contents = [tuple(next().split(' ', 1)) for i in xrange(count)]
-            result.append((start, end, count, contents))
+        # Note that the plain test is explicitly pulled out of the
+        # loop to minimise any performance impact
+        if plain:
+            for header in lines:
+                start, end, count = [int(n) for n in header.split(',')]
+                contents = [next().split(' ', 1)[1] for i in xrange(count)]
+                result.append((start, end, count, contents))
+        else:
+            for header in lines:
+                start, end, count = [int(n) for n in header.split(',')]
+                contents = [tuple(next().split(' ', 1)) for i in xrange(count)]
+                result.append((start, end, count, contents))
         return result
 
     def get_fulltext_content(self, lines):
@@ -2169,8 +2181,20 @@
         assert isinstance(self.source, KnitVersionedFile)
         assert isinstance(self.target, KnitVersionedFile)
 
+        # If the source and target are mismatched w.r.t. annotations vs
+        # plain, the data needs to be converted accordingly
+        if self.source.factory.annotated == self.target.factory.annotated:
+            converter = None
+        elif self.source.factory.annotated:
+            converter = self._anno_to_plain_converter
+        else:
+            # We're converting from a plain to an annotated knit. This requires
+            # building the annotations from scratch. The generic join code
+            # handles this implicitly so we delegate to it.
+            return super(InterKnit, self).join(pb, msg, version_ids,
+                ignore_missing)
+
         version_ids = self._get_source_version_ids(version_ids, ignore_missing)
-
         if not version_ids:
             return 0
 
@@ -2228,13 +2252,31 @@
                 assert version_id == version_id2, 'logic error, inconsistent results'
                 count = count + 1
                 pb.update("Joining knit", count, total)
-                raw_records.append((version_id, options, parents, len(raw_data)))
+                if converter:
+                    size, raw_data = converter(raw_data, version_id, options,
+                        parents)
+                else:
+                    size = len(raw_data)
+                raw_records.append((version_id, options, parents, size))
                 raw_datum.append(raw_data)
             self.target._add_raw_records(raw_records, ''.join(raw_datum))
             return count
         finally:
             pb.finished()
 
+    def _anno_to_plain_converter(self, raw_data, version_id, options,
+                                 parents):
+        """Convert annotated content to plain content."""
+        data, digest = self.source._data._parse_record(version_id, raw_data)
+        if 'fulltext' in options:
+            content = self.source.factory.parse_fulltext(data, version_id)
+            lines = self.target.factory.lower_fulltext(content)
+        else:
+            delta = self.source.factory.parse_line_delta(data, version_id,
+                plain=True)
+            lines = self.target.factory.lower_line_delta(delta)
+        return self.target._data._record_to_data(version_id, digest, lines)
+
 
 InterVersionedFile.register_optimiser(InterKnit)
 

=== modified file 'bzrlib/repofmt/knitrepo.py'
--- a/bzrlib/repofmt/knitrepo.py	2007-09-25 04:34:15 +0000
+++ b/bzrlib/repofmt/knitrepo.py	2007-09-25 21:42:06 +0000
@@ -137,12 +137,6 @@
             raise errors.NoSuchRevision(self, revision_id)
 
     @needs_read_lock
-    def get_revision(self, revision_id):
-        """Return the Revision object for a named revision"""
-        revision_id = osutils.safe_revision_id(revision_id)
-        return self.get_revision_reconcile(revision_id)
-
-    @needs_read_lock
     def get_revision_graph(self, revision_id=None):
         """Return a dictionary containing the revision graph.
 

=== modified file 'bzrlib/repofmt/weaverepo.py'
--- a/bzrlib/repofmt/weaverepo.py	2007-09-20 22:58:47 +0000
+++ b/bzrlib/repofmt/weaverepo.py	2007-09-25 21:42:06 +0000
@@ -24,9 +24,12 @@
 
 from bzrlib import (
     bzrdir,
+    debug,
+    errors,
     lockable_files,
     lockdir,
     osutils,
+    revision as _mod_revision,
     weave,
     weavefile,
     xml5,
@@ -74,6 +77,45 @@
             text_store = get_store('text-store')
         super(AllInOneRepository, self).__init__(_format, a_bzrdir, a_bzrdir._control_files, _revision_store, control_store, text_store)
 
+    @needs_read_lock
+    def _all_possible_ids(self):
+        """Return all the possible revisions that we could find."""
+        if 'evil' in debug.debug_flags:
+            mutter_callsite(3, "_all_possible_ids scales with size of history.")
+        return self.get_inventory_weave().versions()
+
+    @needs_read_lock
+    def _all_revision_ids(self):
+        """Returns a list of all the revision ids in the repository. 
+
+        These are in as much topological order as the underlying store can 
+        present: for weaves ghosts may lead to a lack of correctness until
+        the reweave updates the parents list.
+        """
+        if self._revision_store.text_store.listable():
+            return self._revision_store.all_revision_ids(self.get_transaction())
+        result = self._all_possible_ids()
+        # TODO: jam 20070210 Ensure that _all_possible_ids returns non-unicode
+        #       ids. (It should, since _revision_store's API should change to
+        #       return utf8 revision_ids)
+        return self._eliminate_revisions_not_present(result)
+
+    def _check_revision_parents(self, revision, inventory):
+        """Private to Repository and Fetch.
+        
+        This checks the parentage of revision in an inventory weave for 
+        consistency and is only applicable to inventory-weave-for-ancestry
+        using repository formats & fetchers.
+        """
+        weave_parents = inventory.get_parents(revision.revision_id)
+        weave_names = inventory.versions()
+        for parent_id in revision.parent_ids:
+            if parent_id in weave_names:
+                # this parent must not be a ghost.
+                if not parent_id in weave_parents:
+                    # but it is a ghost
+                    raise errors.CorruptRepository(self)
+
     def get_commit_builder(self, branch, parents, config, timestamp=None,
                            timezone=None, committer=None, revprops=None,
                            revision_id=None):
@@ -85,6 +127,58 @@
         return result
 
     @needs_read_lock
+    def get_revisions(self, revision_ids):
+        revs = self._get_revisions(revision_ids)
+        # weave corruption can lead to absent revision markers that should be
+        # present.
+        # the following test is reasonably cheap (it needs a single weave read)
+        # and the weave is cached in read transactions. In write transactions
+        # it is not cached but typically we only read a small number of
+        # revisions. For knits when they are introduced we will probably want
+        # to ensure that caching write transactions are in use.
+        inv = self.get_inventory_weave()
+        for rev in revs:
+            self._check_revision_parents(rev, inv)
+        return revs
+
+    @needs_read_lock
+    def get_revision_graph(self, revision_id=None):
+        """Return a dictionary containing the revision graph.
+        
+        :param revision_id: The revision_id to get a graph from. If None, then
+        the entire revision graph is returned. This is a deprecated mode of
+        operation and will be removed in the future.
+        :return: a dictionary of revision_id->revision_parents_list.
+        """
+        if 'evil' in debug.debug_flags:
+            mutter_callsite(2,
+                "get_revision_graph scales with size of history.")
+        # special case NULL_REVISION
+        if revision_id == _mod_revision.NULL_REVISION:
+            return {}
+        revision_id = osutils.safe_revision_id(revision_id)
+        a_weave = self.get_inventory_weave()
+        all_revisions = self._eliminate_revisions_not_present(
+                                a_weave.versions())
+        entire_graph = dict([(node, tuple(a_weave.get_parents(node))) for 
+                             node in all_revisions])
+        if revision_id is None:
+            return entire_graph
+        elif revision_id not in entire_graph:
+            raise errors.NoSuchRevision(self, revision_id)
+        else:
+            # add what can be reached from revision_id
+            result = {}
+            pending = set([revision_id])
+            while len(pending) > 0:
+                node = pending.pop()
+                result[node] = entire_graph[node]
+                for revision_id in result[node]:
+                    if revision_id not in result:
+                        pending.add(revision_id)
+            return result
+
+    @needs_read_lock
     def is_shared(self):
         """AllInOne repositories cannot be shared."""
         return False
@@ -111,6 +205,45 @@
 
     _serializer = xml5.serializer_v5
 
+    @needs_read_lock
+    def _all_possible_ids(self):
+        """Return all the possible revisions that we could find."""
+        if 'evil' in debug.debug_flags:
+            mutter_callsite(3, "_all_possible_ids scales with size of history.")
+        return self.get_inventory_weave().versions()
+
+    @needs_read_lock
+    def _all_revision_ids(self):
+        """Returns a list of all the revision ids in the repository. 
+
+        These are in as much topological order as the underlying store can 
+        present: for weaves ghosts may lead to a lack of correctness until
+        the reweave updates the parents list.
+        """
+        if self._revision_store.text_store.listable():
+            return self._revision_store.all_revision_ids(self.get_transaction())
+        result = self._all_possible_ids()
+        # TODO: jam 20070210 Ensure that _all_possible_ids returns non-unicode
+        #       ids. (It should, since _revision_store's API should change to
+        #       return utf8 revision_ids)
+        return self._eliminate_revisions_not_present(result)
+
+    def _check_revision_parents(self, revision, inventory):
+        """Private to Repository and Fetch.
+        
+        This checks the parentage of revision in an inventory weave for 
+        consistency and is only applicable to inventory-weave-for-ancestry
+        using repository formats & fetchers.
+        """
+        weave_parents = inventory.get_parents(revision.revision_id)
+        weave_names = inventory.versions()
+        for parent_id in revision.parent_ids:
+            if parent_id in weave_names:
+                # this parent must not be a ghost.
+                if not parent_id in weave_parents:
+                    # but it is a ghost
+                    raise errors.CorruptRepository(self)
+
     def get_commit_builder(self, branch, parents, config, timestamp=None,
                            timezone=None, committer=None, revprops=None,
                            revision_id=None):
@@ -121,6 +254,60 @@
         self.start_write_group()
         return result
 
+    @needs_read_lock
+    def get_revision(self, revision_id):
+        """Return the Revision object for a named revision"""
+        # TODO: jam 20070210 get_revision_reconcile should do this for us
+        revision_id = osutils.safe_revision_id(revision_id)
+        r = self.get_revision_reconcile(revision_id)
+        # weave corruption can lead to absent revision markers that should be
+        # present.
+        # the following test is reasonably cheap (it needs a single weave read)
+        # and the weave is cached in read transactions. In write transactions
+        # it is not cached but typically we only read a small number of
+        # revisions. For knits when they are introduced we will probably want
+        # to ensure that caching write transactions are in use.
+        inv = self.get_inventory_weave()
+        self._check_revision_parents(r, inv)
+        return r
+
+    @needs_read_lock
+    def get_revision_graph(self, revision_id=None):
+        """Return a dictionary containing the revision graph.
+        
+        :param revision_id: The revision_id to get a graph from. If None, then
+        the entire revision graph is returned. This is a deprecated mode of
+        operation and will be removed in the future.
+        :return: a dictionary of revision_id->revision_parents_list.
+        """
+        if 'evil' in debug.debug_flags:
+            mutter_callsite(3,
+                "get_revision_graph scales with size of history.")
+        # special case NULL_REVISION
+        if revision_id == _mod_revision.NULL_REVISION:
+            return {}
+        revision_id = osutils.safe_revision_id(revision_id)
+        a_weave = self.get_inventory_weave()
+        all_revisions = self._eliminate_revisions_not_present(
+                                a_weave.versions())
+        entire_graph = dict([(node, tuple(a_weave.get_parents(node))) for 
+                             node in all_revisions])
+        if revision_id is None:
+            return entire_graph
+        elif revision_id not in entire_graph:
+            raise errors.NoSuchRevision(self, revision_id)
+        else:
+            # add what can be reached from revision_id
+            result = {}
+            pending = set([revision_id])
+            while len(pending) > 0:
+                node = pending.pop()
+                result[node] = entire_graph[node]
+                for revision_id in result[node]:
+                    if revision_id not in result:
+                        pending.add(revision_id)
+            return result
+
 
 class PreSplitOutRepositoryFormat(RepositoryFormat):
     """Base class for the pre split out repository formats."""

=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2007-09-25 01:47:51 +0000
+++ b/bzrlib/repository.py	2007-09-25 21:42:06 +0000
@@ -525,13 +525,6 @@
         self._revision_store._add_revision(revision, StringIO(text),
                                            self.get_transaction())
 
-    @needs_read_lock
-    def _all_possible_ids(self):
-        """Return all the possible revisions that we could find."""
-        if 'evil' in debug.debug_flags:
-            mutter_callsite(3, "_all_possible_ids scales with size of history.")
-        return self.get_inventory_weave().versions()
-
     def all_revision_ids(self):
         """Returns a list of all the revision ids in the repository. 
 
@@ -543,21 +536,13 @@
             mutter_callsite(2, "all_revision_ids scales with size of history.")
         return self._all_revision_ids()
 
-    @needs_read_lock
     def _all_revision_ids(self):
         """Returns a list of all the revision ids in the repository. 
 
         These are in as much topological order as the underlying store can 
-        present: for weaves ghosts may lead to a lack of correctness until
-        the reweave updates the parents list.
+        present.
         """
-        if self._revision_store.text_store.listable():
-            return self._revision_store.all_revision_ids(self.get_transaction())
-        result = self._all_possible_ids()
-        # TODO: jam 20070210 Ensure that _all_possible_ids returns non-unicode
-        #       ids. (It should, since _revision_store's API should change to
-        #       return utf8 revision_ids)
-        return self._eliminate_revisions_not_present(result)
+        raise NotImplementedError(self._all_revision_ids)
 
     def break_lock(self):
         """Break a lock if one is present from another instance.
@@ -918,6 +903,11 @@
                                                     self.get_transaction())
 
     @needs_read_lock
+    def get_revision(self, revision_id):
+        """Return the Revision object for a named revision."""
+        return self.get_revisions([revision_id])[0]
+
+    @needs_read_lock
     def get_revision_reconcile(self, revision_id):
         """'reconcile' helper routine that allows access to a revision always.
         
@@ -926,14 +916,20 @@
         be used by reconcile, or reconcile-alike commands that are correcting
         or testing the revision graph.
         """
-        if not revision_id or not isinstance(revision_id, basestring):
-            raise errors.InvalidRevisionId(revision_id=revision_id,
-                                           branch=self)
-        return self.get_revisions([revision_id])[0]
+        return self._get_revisions([revision_id])[0]
 
     @needs_read_lock
     def get_revisions(self, revision_ids):
+        """Get many revisions at once."""
+        return self._get_revisions(revision_ids)
+
+    @needs_read_lock
+    def _get_revisions(self, revision_ids):
+        """Core work logic to get many revisions without sanity checks."""
         revision_ids = [osutils.safe_revision_id(r) for r in revision_ids]
+        for rev_id in revision_ids:
+            if not rev_id or not isinstance(rev_id, basestring):
+                raise errors.InvalidRevisionId(revision_id=rev_id, branch=self)
         revs = self._revision_store.get_revisions(revision_ids,
                                                   self.get_transaction())
         for rev in revs:
@@ -956,23 +952,6 @@
         return rev_tmp.getvalue()
 
     @needs_read_lock
-    def get_revision(self, revision_id):
-        """Return the Revision object for a named revision"""
-        # TODO: jam 20070210 get_revision_reconcile should do this for us
-        revision_id = osutils.safe_revision_id(revision_id)
-        r = self.get_revision_reconcile(revision_id)
-        # weave corruption can lead to absent revision markers that should be
-        # present.
-        # the following test is reasonably cheap (it needs a single weave read)
-        # and the weave is cached in read transactions. In write transactions
-        # it is not cached but typically we only read a small number of
-        # revisions. For knits when they are introduced we will probably want
-        # to ensure that caching write transactions are in use.
-        inv = self.get_inventory_weave()
-        self._check_revision_parents(r, inv)
-        return r
-
-    @needs_read_lock
     def get_deltas_for_revisions(self, revisions):
         """Produce a generator of revision deltas.
         
@@ -1003,22 +982,6 @@
         r = self.get_revision(revision_id)
         return list(self.get_deltas_for_revisions([r]))[0]
 
-    def _check_revision_parents(self, revision, inventory):
-        """Private to Repository and Fetch.
-        
-        This checks the parentage of revision in an inventory weave for 
-        consistency and is only applicable to inventory-weave-for-ancestry
-        using repository formats & fetchers.
-        """
-        weave_parents = inventory.get_parents(revision.revision_id)
-        weave_names = inventory.versions()
-        for parent_id in revision.parent_ids:
-            if parent_id in weave_names:
-                # this parent must not be a ghost.
-                if not parent_id in weave_parents:
-                    # but it is a ghost
-                    raise errors.CorruptRepository(self)
-
     @needs_write_lock
     def store_revision_signature(self, gpg_strategy, plaintext, revision_id):
         revision_id = osutils.safe_revision_id(revision_id)
@@ -1251,39 +1214,16 @@
     @needs_read_lock
     def get_revision_graph(self, revision_id=None):
         """Return a dictionary containing the revision graph.
-        
+
+        NB: This method should not be used as it accesses the entire graph all
+        at once, which is much more data than most operations should require.
+
         :param revision_id: The revision_id to get a graph from. If None, then
         the entire revision graph is returned. This is a deprecated mode of
         operation and will be removed in the future.
         :return: a dictionary of revision_id->revision_parents_list.
         """
-        if 'evil' in debug.debug_flags:
-            mutter_callsite(3,
-                "get_revision_graph scales with size of history.")
-        # special case NULL_REVISION
-        if revision_id == _mod_revision.NULL_REVISION:
-            return {}
-        revision_id = osutils.safe_revision_id(revision_id)
-        a_weave = self.get_inventory_weave()
-        all_revisions = self._eliminate_revisions_not_present(
-                                a_weave.versions())
-        entire_graph = dict([(node, tuple(a_weave.get_parents(node))) for 
-                             node in all_revisions])
-        if revision_id is None:
-            return entire_graph
-        elif revision_id not in entire_graph:
-            raise errors.NoSuchRevision(self, revision_id)
-        else:
-            # add what can be reached from revision_id
-            result = {}
-            pending = set([revision_id])
-            while len(pending) > 0:
-                node = pending.pop()
-                result[node] = entire_graph[node]
-                for revision_id in result[node]:
-                    if revision_id not in result:
-                        pending.add(revision_id)
-            return result
+        raise NotImplementedError(self.get_revision_graph)
 
     @needs_read_lock
     def get_revision_graph_with_ghosts(self, revision_ids=None):
@@ -2120,7 +2060,11 @@
 
 
 class InterWeaveRepo(InterSameDataRepository):
-    """Optimised code paths between Weave based repositories."""
+    """Optimised code paths between Weave based repositories.
+    
+    This should be in bzrlib/repofmt/weaverepo.py but we have not yet
+    implemented lazy inter-object optimisation.
+    """
 
     @classmethod
     def _get_repo_format_to_test(self):
@@ -2284,13 +2228,13 @@
             assert source_ids[0] is None
             source_ids.pop(0)
         else:
-            source_ids = self.source._all_possible_ids()
+            source_ids = self.source.all_revision_ids()
         source_ids_set = set(source_ids)
         # source_ids is the worst possible case we may need to pull.
         # now we want to filter source_ids against what we actually
         # have in target, but don't try to check for existence where we know
         # we do not have a revision as that would be pointless.
-        target_ids = set(self.target._all_possible_ids())
+        target_ids = set(self.target.all_revision_ids())
         possibly_present_revisions = target_ids.intersection(source_ids_set)
         actually_present_revisions = set(self.target._eliminate_revisions_not_present(possibly_present_revisions))
         required_revisions = source_ids_set.difference(actually_present_revisions)

=== modified file 'bzrlib/tests/blackbox/test_commit.py'
--- a/bzrlib/tests/blackbox/test_commit.py	2007-09-22 16:20:37 +0000
+++ b/bzrlib/tests/blackbox/test_commit.py	2007-09-25 19:23:14 +0000
@@ -521,3 +521,20 @@
         last_rev = tree.branch.repository.get_revision(tree.last_revision())
         properties = last_rev.properties
         self.assertEqual('John Doe', properties['author'])
+
+    def test_partial_commit_with_renames_in_tree(self):
+        # this test illustrates bug #140419
+        t = self.make_branch_and_tree('.')
+        self.build_tree(['dir/', 'dir/a', 'test'])
+        t.add(['dir/', 'dir/a', 'test'])
+        t.commit('initial commit')
+        # important part: file dir/a should change parent
+        # and should appear before old parent
+        # then during partial commit we have error
+        # parent_id {dir-XXX} not in inventory
+        t.rename_one('dir/a', 'a')
+        self.build_tree_contents([('test', 'changes in test')])
+        # partial commit
+        out, err = self.run_bzr('commit test -m "partial commit"')
+        self.assertEquals('', out)
+        self.assertContainsRe(err, r'modified test\nCommitted revision 2.')

=== modified file 'bzrlib/tests/blackbox/test_merge.py'
--- a/bzrlib/tests/blackbox/test_merge.py	2007-09-14 13:58:32 +0000
+++ b/bzrlib/tests/blackbox/test_merge.py	2007-09-25 19:01:48 +0000
@@ -344,3 +344,39 @@
         self.run_bzr('merge -d target -r revid:rev2a branch_b')
         self.failUnlessExists('target/file1')
         self.failIfExists('target/file2')
+
+    def assertDirectoryContent(self, directory, entries, message=''):
+        """Assert whether entries (file or directories) exist in a directory.
+        
+        It also checks that there are no extra entries.
+        """
+        ondisk = os.listdir(directory)
+        if set(ondisk) == set(entries):
+            return
+        if message:
+            message += '\n'
+        raise AssertionError(
+            '%s"%s" directory content is different:\na = %s\nb = %s\n'
+            % (message, directory, sorted(entries), sorted(ondisk)))
+
+    def test_cherrypicking_merge(self):
+        # make source branch
+        source = self.make_branch_and_tree('source')
+        for f in ('a', 'b', 'c', 'd'):
+            self.build_tree(['source/'+f])
+            source.add(f)
+            source.commit('added '+f, rev_id='rev_'+f)
+        # target branch
+        target = source.bzrdir.sprout('target', 'rev_a').open_workingtree()
+        self.assertDirectoryContent('target', ['.bzr', 'a'])
+        # pick 1 revision
+        self.run_bzr('merge -d target -r revid:rev_b..revid:rev_c source')
+        self.assertDirectoryContent('target', ['.bzr', 'a', 'c'])
+        target.revert()
+        # pick 2 revisions
+        self.run_bzr('merge -d target -r revid:rev_b..revid:rev_d source')
+        self.assertDirectoryContent('target', ['.bzr', 'a', 'c', 'd'])
+        target.revert()
+        # pick 1 revision with option --changes
+        self.run_bzr('merge -d target -c revid:rev_d source')
+        self.assertDirectoryContent('target', ['.bzr', 'a', 'd'])

=== modified file 'bzrlib/tests/blackbox/test_revert.py'
--- a/bzrlib/tests/blackbox/test_revert.py	2007-06-27 19:13:50 +0000
+++ b/bzrlib/tests/blackbox/test_revert.py	2007-09-24 05:18:37 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2005 Canonical Ltd
+# Copyright (C) 2005, 2007 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
@@ -186,3 +186,24 @@
         out, err = self.run_bzr('revert -r -2')
         self.assertEqual('', out)
         self.assertEqual('-D  file\n', err)
+
+    def test_revert_forget_merges(self):
+        # revert --forget-merges removes any pending merges into the tree, but
+        # leaves the files unchanged
+        tree = self.make_branch_and_tree('.')
+        # forget-merges before first commit, though pointless, does not fail
+        self.run_bzr(['revert', '--forget-merges'])
+        self.build_tree(['file'])
+        first_rev_id = tree.commit('initial commit')
+        self.build_tree_contents([('file', 'new content')])
+        existing_parents = tree.get_parent_ids()
+        self.assertEquals([first_rev_id], existing_parents)
+        merged_parents = existing_parents + ['merged-in-rev']
+        tree.set_parent_ids(merged_parents)
+        self.assertEquals(merged_parents, tree.get_parent_ids())
+        self.run_bzr(['revert', '--forget-merges'])
+        self.assertEquals([first_rev_id], tree.get_parent_ids())
+        # changed files are not reverted
+        self.assertFileEqual('new content', 'file')
+        # you can give it the path of a tree
+        self.run_bzr(['revert', '--forget-merges', tree.abspath('.')])

=== modified file 'bzrlib/tests/test_knit.py'
--- a/bzrlib/tests/test_knit.py	2007-09-24 05:54:25 +0000
+++ b/bzrlib/tests/test_knit.py	2007-09-25 21:42:06 +0000
@@ -1315,22 +1315,38 @@
         self.assertEquals(origins[1], ('text-1', 'b\n'))
         self.assertEquals(origins[2], ('text-1', 'c\n'))
 
-    def test_knit_join(self):
-        """Store in knit with parents"""
-        k1 = KnitVersionedFile('test1', get_transport('.'), factory=KnitPlainFactory(), create=True)
-        k1.add_lines('text-a', [], split_lines(TEXT_1))
-        k1.add_lines('text-b', ['text-a'], split_lines(TEXT_1))
-
-        k1.add_lines('text-c', [], split_lines(TEXT_1))
-        k1.add_lines('text-d', ['text-c'], split_lines(TEXT_1))
-
-        k1.add_lines('text-m', ['text-b', 'text-d'], split_lines(TEXT_1))
-
-        k2 = KnitVersionedFile('test2', get_transport('.'), factory=KnitPlainFactory(), create=True)
+    def _test_join_with_factories(self, k1_factory, k2_factory):
+        k1 = KnitVersionedFile('test1', get_transport('.'), factory=k1_factory, create=True)
+        k1.add_lines('text-a', [], ['a1\n', 'a2\n', 'a3\n'])
+        k1.add_lines('text-b', ['text-a'], ['a1\n', 'b2\n', 'a3\n'])
+        k1.add_lines('text-c', [], ['c1\n', 'c2\n', 'c3\n'])
+        k1.add_lines('text-d', ['text-c'], ['c1\n', 'd2\n', 'd3\n'])
+        k1.add_lines('text-m', ['text-b', 'text-d'], ['a1\n', 'b2\n', 'd3\n'])
+        k2 = KnitVersionedFile('test2', get_transport('.'), factory=k2_factory, create=True)
         count = k2.join(k1, version_ids=['text-m'])
         self.assertEquals(count, 5)
         self.assertTrue(k2.has_version('text-a'))
         self.assertTrue(k2.has_version('text-c'))
+        origins = k2.annotate('text-m')
+        self.assertEquals(origins[0], ('text-a', 'a1\n'))
+        self.assertEquals(origins[1], ('text-b', 'b2\n'))
+        self.assertEquals(origins[2], ('text-d', 'd3\n'))
+
+    def test_knit_join_plain_to_plain(self):
+        """Test joining a plain knit with a plain knit."""
+        self._test_join_with_factories(KnitPlainFactory(), KnitPlainFactory())
+
+    def test_knit_join_anno_to_anno(self):
+        """Test joining an annotated knit with an annotated knit."""
+        self._test_join_with_factories(None, None)
+
+    def test_knit_join_anno_to_plain(self):
+        """Test joining an annotated knit with a plain knit."""
+        self._test_join_with_factories(None, KnitPlainFactory())
+
+    def test_knit_join_plain_to_anno(self):
+        """Test joining a plain knit with an annotated knit."""
+        self._test_join_with_factories(KnitPlainFactory(), None)
 
     def test_reannotate(self):
         k1 = KnitVersionedFile('knit1', get_transport('.'),

=== modified file 'bzrlib/tests/test_trace.py'
--- a/bzrlib/tests/test_trace.py	2007-09-21 03:07:10 +0000
+++ b/bzrlib/tests/test_trace.py	2007-09-24 06:00:49 +0000
@@ -30,6 +30,7 @@
 from bzrlib.trace import (
     mutter, mutter_callsite, report_exception,
     set_verbosity_level, get_verbosity_level, is_quiet, is_verbose, be_quiet,
+    _rollover_trace_maybe,
     )
 
 
@@ -174,3 +175,15 @@
         self.assertEqual(-1, get_verbosity_level())
         be_quiet(False)
         self.assertEqual(0, get_verbosity_level())
+
+
+class TestBzrLog(TestCaseInTempDir):
+
+    def test_log_rollover(self):
+        temp_log_name = 'test-log'
+        trace_file = open(temp_log_name, 'at')
+        trace_file.write('test_log_rollover padding\n' * 1000000)
+        trace_file.close()
+        _rollover_trace_maybe(temp_log_name)
+        # should have been rolled over
+        self.assertFalse(os.access(temp_log_name, os.R_OK))

=== modified file 'bzrlib/trace.py'
--- a/bzrlib/trace.py	2007-09-21 06:13:09 +0000
+++ b/bzrlib/trace.py	2007-09-24 06:00:49 +0000
@@ -151,7 +151,7 @@
         if size <= 4 << 20:
             return
         old_fname = trace_fname + '.old'
-        rename(trace_fname, old_fname)
+        osutils.rename(trace_fname, old_fname)
     except OSError:
         return
 

=== modified file 'bzrlib/versionedfile.py'
--- a/bzrlib/versionedfile.py	2007-09-21 01:36:48 +0000
+++ b/bzrlib/versionedfile.py	2007-09-25 21:42:06 +0000
@@ -625,8 +625,9 @@
             # TODO: remove parent texts when they are not relevant any more for 
             # memory pressure reduction. RBC 20060313
             # pb.update('Converting versioned data', 0, len(order))
+            total = len(order)
             for index, version in enumerate(order):
-                pb.update('Converting versioned data', index, len(order))
+                pb.update('Converting versioned data', index, total)
                 _, _, parent_text = target.add_lines(version,
                                                self.source.get_parents(version),
                                                self.source.get_lines(version),
@@ -640,6 +641,8 @@
                                         msg,
                                         version_ids,
                                         ignore_missing)
+            else:
+                return total
         finally:
             pb.finished()
 

=== modified file 'bzrlib/workingtree.py'
--- a/bzrlib/workingtree.py	2007-09-25 05:53:46 +0000
+++ b/bzrlib/workingtree.py	2007-09-25 21:42:06 +0000
@@ -702,7 +702,7 @@
         if updated:
             self.set_parent_ids(parents, allow_leftmost_as_ghost=True)
 
-    def path_content_summary(self, path, _lstat=os.lstat,
+    def path_content_summary(self, path, _lstat=osutils.lstat,
         _mapper=osutils.file_kind_from_stat_mode):
         """See Tree.path_content_summary."""
         abspath = self.abspath(path)
@@ -712,7 +712,7 @@
             if getattr(e, 'errno', None) == errno.ENOENT:
                 # no file.
                 return ('missing', None, None, None)
-            # propogate other errors
+            # propagate other errors
             raise
         kind = _mapper(stat_result.st_mode)
         if kind == 'file':



More information about the bazaar-commits mailing list