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

Robert Collins robertc at robertcollins.net
Thu Sep 20 23:59:05 BST 2007


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

------------------------------------------------------------
revno: 2767
revision-id: robertc at robertcollins.net-20070920225847-q6kfq6cqkc331w2b
parent: robertc at robertcollins.net-20070914024636-6olqfc532pyt61kl
parent: robertc at robertcollins.net-20070917061036-fzr1h7zs9b3rr573
committer: Robert Collins <robertc at robertcollins.net>
branch nick: repository
timestamp: Fri 2007-09-21 08:58:47 +1000
message:
  Merge various bzr.dev improvements.
modified:
  .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
  Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
  bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
  bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
  bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
  bzrlib/mail_client.py          mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
  bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
  bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
  bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
  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/tree.py                 tree.py-20050309040759-9d5f2496be663e77
  bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
  doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.50
    revision-id: robertc at robertcollins.net-20070917061036-fzr1h7zs9b3rr573
    parent: robertc at robertcollins.net-20070917014525-s9rxjft45ka581fg
    parent: robertc at robertcollins.net-20070917053356-05fyvmd1b3xalx6h
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: commit
    timestamp: Mon 2007-09-17 16:10:36 +1000
    message:
      Merge rename_one fix which fixes a test suite api violation allowing more commit refactoring.
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
      bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
      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
        ------------------------------------------------------------
        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.9
        revision-id: robertc at robertcollins.net-20070917053356-05fyvmd1b3xalx6h
        parent: pqm at pqm.ubuntu.com-20070917005035-cshdkpzbj63id1uw
        committer: Robert Collins <robertc at robertcollins.net>
        branch nick: rename_one
        timestamp: Mon 2007-09-17 15:33:56 +1000
        message:
          * ``WorkingTree.rename_one`` will now raise an error if normalisation of the
            new path causes bzr to be unable to access the file. (Robert Collins)
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
          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
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.49
    revision-id: robertc at robertcollins.net-20070917014525-s9rxjft45ka581fg
    parent: robertc at robertcollins.net-20070914034315-pyf153e6rrw792z4
    parent: pqm at pqm.ubuntu.com-20070917005035-cshdkpzbj63id1uw
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: commit
    timestamp: Mon 2007-09-17 11:45:25 +1000
    message:
      Merge bzr.dev.
    modified:
      .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
      Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
      bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
      bzrlib/mail_client.py          mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
      bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
      bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
      bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
      bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
      doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
        ------------------------------------------------------------
        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
        revision-id: pqm at pqm.ubuntu.com-20070917005035-cshdkpzbj63id1uw
        parent: pqm at pqm.ubuntu.com-20070916202904-8ad60iodgmscjglj
        parent: robertc at robertcollins.net-20070916234815-85qrvjbtikmge5wa
        committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
        branch nick: +trunk
        timestamp: Mon 2007-09-17 01:50:35 +0100
        message:
          (robertc) Allow declaritive changing of the CommitBuilder class for repositories. (Robert Collins)
        modified:
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-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.1.3.3
            revision-id: robertc at robertcollins.net-20070916234815-85qrvjbtikmge5wa
            parent: robertc at robertcollins.net-20070916234606-f4jtysecefi2bnh2
            parent: pqm at pqm.ubuntu.com-20070916202904-8ad60iodgmscjglj
            committer: Robert Collins <robertc at robertcollins.net>
            branch nick: integration
            timestamp: Mon 2007-09-17 09:48:15 +1000
            message:
              Merge bzr.dev.
            modified:
              .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
              Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/benchmarks/tree_creator/kernel_like.py kernel_like.py-20060815024128-b16a7pn542u6b13k-1
              bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
              bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
              bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
              bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
              bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
              bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
              bzrlib/lsprof.py               lsprof.py-20051208071030-833790916798ceed
              bzrlib/mail_client.py          mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
              bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
              bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
              bzrlib/tests/test_commit.py    test_commit.py-20050914060732-279f057f8c295434
              bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
              bzrlib/tests/test_lsprof.py    test_lsprof.py-20070606095601-bctdndm8yhc0cqnc-1
              bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
              bzrlib/tests/test_xml.py       test_xml.py-20050905091053-80b45588931a9b35
              bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
              bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
              bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
              bzrlib/xml4.py                 xml4.py-20050916091259-db5ab55e7e6ca324
              bzrlib/xml5.py                 xml5.py-20050907032657-aac8f960815b66b1
              bzrlib/xml6.py                 xml6.py-20060823042456-dbaaq4atrche7xy5-1
              bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
              doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
            ------------------------------------------------------------
            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.1.3.2
            revision-id: robertc at robertcollins.net-20070916234606-f4jtysecefi2bnh2
            parent: robertc at robertcollins.net-20070914003133-qo0tvlg5fwvbwp5i
            committer: Robert Collins <robertc at robertcollins.net>
            branch nick: commit-builder
            timestamp: Mon 2007-09-17 09:46:06 +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.1.3.1
            revision-id: robertc at robertcollins.net-20070914003133-qo0tvlg5fwvbwp5i
            parent: pqm at pqm.ubuntu.com-20070913193317-hi3rhwxhbrviw7hz
            committer: Robert Collins <robertc at robertcollins.net>
            branch nick: commit-builder
            timestamp: Fri 2007-09-14 10:31:33 +1000
            message:
              Change CommitBuilder factory delegation to allow simple declaration.
            modified:
              bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-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.7
        revision-id: pqm at pqm.ubuntu.com-20070916202904-8ad60iodgmscjglj
        parent: pqm at pqm.ubuntu.com-20070914082550-j9aknobh4x00qksk
        parent: jelmer at samba.org-20070916192900-fph1i2wsytberyyl
        committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
        branch nick: +trunk
        timestamp: Sun 2007-09-16 21:29:04 +0100
        message:
          (Keir Mierle) Add Mutt as a supported email client
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
          bzrlib/mail_client.py          mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
          bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
          bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
          doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
            ------------------------------------------------------------
            revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.14.2.6
            revision-id: jelmer at samba.org-20070916192900-fph1i2wsytberyyl
            parent: keir at cs.utoronto.ca-20070904190351-ug32zv9dcfqtluvi
            parent: pqm at pqm.ubuntu.com-20070914082550-j9aknobh4x00qksk
            committer: Jelmer Vernooij <jelmer at samba.org>
            branch nick: bzr.dev
            timestamp: Sun 2007-09-16 21:29:00 +0200
            message:
              Merge bzr.dev.
            added:
              bzrlib/_patiencediff_c.c       _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
              bzrlib/patiencediff.py         patiencediff.py-20070721205536-jz8gaykeb7xtampk-1
              bzrlib/tests/blackbox/test_unknowns.py test_unknowns.py-20070905015344-74tg6s1synijo2oe-1
              bzrlib/tests/commands/test_update.py test_update.py-20070910091045-8uyp8v73j926l1g2-1
            renamed:
              bzrlib/patiencediff.py => bzrlib/_patiencediff_py.py cdvdifflib.py-20051106064558-f8f8097fbf0db4e4
            modified:
              .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
              Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzr                            bzr.py-20050313053754-5485f144c7006fa6
              bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
              bzrlib/benchmarks/tree_creator/kernel_like.py kernel_like.py-20060815024128-b16a7pn542u6b13k-1
              bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
              bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
              bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
              bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
              bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
              bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
              bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
              bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
              bzrlib/help_topics.py          help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
              bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
              bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
              bzrlib/lsprof.py               lsprof.py-20051208071030-833790916798ceed
              bzrlib/reconcile.py            reweave_inventory.py-20051108164726-1e5e0934febac06e
              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/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
              bzrlib/tag.py                  tag.py-20070212110532-91cw79inah2cfozx-1
              bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
              bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
              bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
              bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
              bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
              bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
              bzrlib/tests/branch_implementations/test_sprout.py test_sprout.py-20070521151739-b8t8p7axw1h966ws-1
              bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
              bzrlib/tests/commands/__init__.py __init__.py-20070520095518-ecfl8531fxgjeycj-1
              bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
              bzrlib/tests/intertree_implementations/test_compare.py test_compare.py-20060724101752-09ysswo1a92uqyoz-2
              bzrlib/tests/repository_implementations/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
              bzrlib/tests/test_commit.py    test_commit.py-20050914060732-279f057f8c295434
              bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
              bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
              bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
              bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
              bzrlib/tests/test_lsprof.py    test_lsprof.py-20070606095601-bctdndm8yhc0cqnc-1
              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_revert.py    test_revert.py-20060828180832-fqb1v6ecpyvnlitj-1
              bzrlib/tests/test_tag.py       test_tag.py-20070212110532-91cw79inah2cfozx-2
              bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
              bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
              bzrlib/tests/test_xml.py       test_xml.py-20050905091053-80b45588931a9b35
              bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
              bzrlib/tests/workingtree_implementations/test_executable.py test_executable.py-20060628162557-tr7h57kl80l3ma8i-1
              bzrlib/tests/workingtree_implementations/test_inv.py test_inv.py-20070311221604-ighlq8tbn5xq0kuo-1
              bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
              bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
              bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
              bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
              bzrlib/version.py              version.py-20060816024207-ves6ult9a11taj9t-1
              bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
              bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
              bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
              bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
              bzrlib/xml4.py                 xml4.py-20050916091259-db5ab55e7e6ca324
              bzrlib/xml5.py                 xml5.py-20050907032657-aac8f960815b66b1
              bzrlib/xml6.py                 xml6.py-20060823042456-dbaaq4atrche7xy5-1
              bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
              doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
              setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
              bzrlib/_patiencediff_py.py     cdvdifflib.py-20051106064558-f8f8097fbf0db4e4
            ------------------------------------------------------------
            revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.14.2.5
            revision-id: keir at cs.utoronto.ca-20070904190351-ug32zv9dcfqtluvi
            parent: keir at cs.utoronto.ca-20070904190215-t7ygwihk735ja8lk
            committer: Keir Mierle <keir at cs.utoronto.ca>
            branch nick: bzr.dev
            timestamp: Tue 2007-09-04 12:03:51 -0700
            message:
              Change ordering of clients listing.
            modified:
              doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
            ------------------------------------------------------------
            revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.14.2.4
            revision-id: keir at cs.utoronto.ca-20070904190215-t7ygwihk735ja8lk
            parent: keir at cs.utoronto.ca-20070904175722-9j9yffl5swt2oisx
            committer: Keir Mierle <keir at cs.utoronto.ca>
            branch nick: bzr.dev
            timestamp: Tue 2007-09-04 12:02:15 -0700
            message:
              Spelling
            modified:
              bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
            ------------------------------------------------------------
            revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.14.2.3
            revision-id: keir at cs.utoronto.ca-20070904175722-9j9yffl5swt2oisx
            parent: keir at cs.utoronto.ca-20070904175027-xvye7lkynkkrz9tl
            parent: pqm at pqm.ubuntu.com-20070904035759-iv4xl6d7ez69txba
            committer: Keir Mierle <keir at cs.utoronto.ca>
            branch nick: bzr.dev
            timestamp: Tue 2007-09-04 10:57:22 -0700
            message:
              Merge from upstream
            added:
              bzrlib/benchmarks/bench_pack.py bench_pack.py-20070903042947-0wphp878xr6wkw7t-1
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/benchmarks/__init__.py  __init__.py-20060516064526-eb0d37c78e86065d
              bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
              bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
              bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
              bzrlib/pack.py                 container.py-20070607160755-tr8zc26q18rn0jnb-1
              bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
              bzrlib/tests/blackbox/test_cat.py test_cat.py-20051201162916-f0937e4e19ea24b3
              bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
              bzrlib/tests/blackbox/test_conflicts.py test_conflicts.py-20060228151432-9723ebb925b999cf
              bzrlib/tests/blackbox/test_status.py teststatus.py-20050712014354-508855eb9f29f7dc
              bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
              bzrlib/tests/test_weave.py     testknit.py-20050627023648-9833cc5562ffb785
              bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
              bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
            ------------------------------------------------------------
            revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.14.2.2
            revision-id: keir at cs.utoronto.ca-20070904175027-xvye7lkynkkrz9tl
            parent: keir at cs.utoronto.ca-20070903235422-zfj6mk7nts9nmzw2
            committer: Keir Mierle <keir at cs.utoronto.ca>
            branch nick: bzr.dev
            timestamp: Tue 2007-09-04 10:50:27 -0700
            message:
              Change alphabetic ordering into two categories; one for specific clients the other for generic options.
            modified:
              bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
              bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
              bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
              doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
            ------------------------------------------------------------
            revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.31.3.14.2.1
            revision-id: keir at cs.utoronto.ca-20070903235422-zfj6mk7nts9nmzw2
            parent: pqm at pqm.ubuntu.com-20070903130729-qdcrag0a7vcpzfgm
            committer: Keir Mierle <keir at cs.utoronto.ca>
            branch nick: bzr.dev
            timestamp: Mon 2007-09-03 16:54:22 -0700
            message:
              Add Mutt as a supported client email program. Also rearranges various listings
              of the mail clients to be alphabetical; the number of supported email clients
              is only going to grow, and this way it is easier to scan for your favorite
              email client.
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
              bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
              bzrlib/mail_client.py          mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
              bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
              bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
              doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
        ------------------------------------------------------------
        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.6
        revision-id: pqm at pqm.ubuntu.com-20070914082550-j9aknobh4x00qksk
        parent: pqm at pqm.ubuntu.com-20070914043128-s7ck70bf5bzefbiq
        parent: mbp at sourcefrog.net-20070914063128-0p7mh6zfb4pzdg9p
        committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
        branch nick: +trunk
        timestamp: Fri 2007-09-14 09:25:50 +0100
        message:
          (mbp) update Makefile: remove old check-msgeditor; better rules for tags and TAGS
        modified:
          .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
          Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
            ------------------------------------------------------------
            revno: 2592.1.25.2.7.1.1.11.3
            revision-id: mbp at sourcefrog.net-20070914063128-0p7mh6zfb4pzdg9p
            parent: mbp at sourcefrog.net-20070914032655-fpq0pfpja4kesuij
            parent: pqm at pqm.ubuntu.com-20070914043128-s7ck70bf5bzefbiq
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: makefile-cleanup
            timestamp: Fri 2007-09-14 16:31:28 +1000
            message:
              merge trunk
            removed:
              bzrlib/bundle/common.py        common.py-20050619223838-f25048f6638f04c6
              bzrlib/bundle/old/             old-20051119041827-8f2417a9cc3b67f2
              bzrlib/bundle/old/send_changeset.py send_changeset.py-20050628200204-9478d383946f1871
              doc/README.1st                 README.1st-20060314161707-b943d5d4cce669b6
              doc/developers/scratch.txt     scratch.txt-20070618020404-cdhv0ecgrukomemg-3
            added:
              bzrlib/_dirstate_helpers_c.h   _dirstate_helpers_c.-20070802205935-hqo9yzuzjix271dd-1
              bzrlib/_dirstate_helpers_c.pyx dirstate_helpers.pyx-20070503201057-u425eni465q4idwn-3
              bzrlib/_dirstate_helpers_py.py _dirstate_helpers_py-20070710145033-90nz6cqglsk150jy-1
              bzrlib/_patiencediff_c.c       _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
              bzrlib/benchmarks/bench_dirstate.py bench_dirstate.py-20070503203500-gs0pz6zkvjpq9l2x-1
              bzrlib/benchmarks/bench_pack.py bench_pack.py-20070903042947-0wphp878xr6wkw7t-1
              bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
              bzrlib/email_message.py        email_message.py-20070718143823-660zfcl54xi1v65u-1
              bzrlib/mail_client.py          mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
              bzrlib/multiparent.py          __init__.py-20070410133617-n1jdhcc1n1mibarp-1
              bzrlib/patiencediff.py         patiencediff.py-20070721205536-jz8gaykeb7xtampk-1
              bzrlib/plugins/multiparent.py  mpregen-20070411063203-5x9z7i73add0d6f6-1
              bzrlib/tests/blackbox/test_bundle_info.py test_bundle_info.py-20070816181255-eiuodwxuqu7w7gxf-1
              bzrlib/tests/blackbox/test_unknowns.py test_unknowns.py-20070905015344-74tg6s1synijo2oe-1
              bzrlib/tests/commands/         commands-20070518182516-v16lhwkl07jbj1k2-1
              bzrlib/tests/commands/__init__.py __init__.py-20070520095518-ecfl8531fxgjeycj-1
              bzrlib/tests/commands/test_branch.py test_branch.py-20070520173042-ou3a796w3xn1y8ps-1
              bzrlib/tests/commands/test_cat.py test_cat.py-20070525170351-vg2apsfb5j413913-1
              bzrlib/tests/commands/test_checkout.py test_checkout.py-20070525151718-vm7ligd5px5dtmda-1
              bzrlib/tests/commands/test_init.py test_init.py-20070514074921-audbcdd8o56dpame-1
              bzrlib/tests/commands/test_init_repository.py test_init_repository-20070525163812-87xw0678ky573l27-1
              bzrlib/tests/commands/test_merge.py test_merge.py-20070525163813-v8yfs5wu77hjsx0o-1
              bzrlib/tests/commands/test_missing.py test_missing.py-20070525171057-qr1z4sleurlp9b5v-1
              bzrlib/tests/commands/test_pull.py test_pull.py-20070525144918-cgmunk4ici2krjnd-1
              bzrlib/tests/commands/test_push.py test_push.py-20070525122003-gc1ob0ea0nueoqgj-1
              bzrlib/tests/commands/test_update.py test_update.py-20070910091045-8uyp8v73j926l1g2-1
              bzrlib/tests/inventory_implementations/ bzrlibtestsinventory-20070820060653-4mjbbmwhp74dsf3x-1
              bzrlib/tests/inventory_implementations/__init__.py __init__.py-20070821044532-olbadbokgv3qv1yd-1
              bzrlib/tests/inventory_implementations/basics.py basics.py-20070903044446-kdjwbiu1p1zi9phs-1
              bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
              bzrlib/tests/repository_implementations/test_has_same_location.py test_has_same_locati-20070807074648-2i2ah82fbe83iys7-1
              bzrlib/tests/repository_implementations/test_write_group.py test_write_group.py-20070716105516-89n34xtogq5frn0m-1
              bzrlib/tests/test__dirstate_helpers.py test_dirstate_helper-20070504035751-jsbn00xodv0y1eve-2
              bzrlib/tests/test_email_message.py test_email_message.p-20070718143823-660zfcl54xi1v65u-2
              bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
              bzrlib/tests/test_multiparent.py test_multiparent.py-20070410133617-n1jdhcc1n1mibarp-4
              bzrlib/tests/test_win32utils.py test_win32utils.py-20070713181630-8xsrjymd3e8mgw23-108
              bzrlib/tests/transport_util.py transportutil.py-20070525113600-5v2igk89s8fensom-1
              bzrlib/transport/unlistable.py unlistable.py-20070714093417-5gc9d821to85zo4t-2
              bzrlib/util/simplemapi.py      simplemapi.py-20070810174811-ievl23nziuiq2k3m-1
              doc/developers/bundle-format4.txt bundleformat4.txt-20070621120628-r3332ovd8u4agv8i-1
              doc/developers/directory-fingerprints.txt directoryfingerprint-20070731033348-okmllh4b5srdtlk2-1
              doc/developers/last-modified.txt lastmodified.txt-20070806222243-df50y5fi7n85vnob-1
              doc/developers/missing.txt     missing.txt-20070718093412-eqjvfwo0oacov5sn-1
              doc/developers/revision-properties.txt revisionproperties.t-20070807133526-w57m8zv5o7t5kugm-1
              doc/developers/update.txt      update.txt-20070713074325-vtxf9eb5c6keg30j-1
              doc/en/                        en-20070810050627-g7r46azs5mlwj61j-1
              doc/en/developer-guide/        developerguide-20070810050627-g7r46azs5mlwj61j-2
              doc/en/mini-tutorial/          minitutorial-20070813141352-2u64ooqzo0or4hss-1
              doc/en/mini-tutorial/index.txt index.txt-20070813141352-2u64ooqzo0or4hss-2
              doc/en/quick-reference/        quickreference-20070813143223-5i7bgw7w8s7l3ae2-1
              doc/en/quick-reference/Makefile makefile-20070813143223-5i7bgw7w8s7l3ae2-2
              doc/en/quick-reference/quick-start-summary.svg quickstartsummary.sv-20070813143223-5i7bgw7w8s7l3ae2-3
              doc/en/release-notes/          releasenotes-20070810050627-g7r46azs5mlwj61j-3
              doc/en/user-guide/             userguide-20070810050627-g7r46azs5mlwj61j-4
              doc/en/user-guide/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
              doc/en/user-guide/hooks.txt    hooks.txt-20070829200551-7nr6e5a1io6x78uf-1
              doc/en/user-reference/         userreference-20070810050627-g7r46azs5mlwj61j-5
              doc/en/user-reference/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
              doc/en/user-reference/index.txt index.txt-20070830033353-ud9e03xsh24053oo-1
              doc/index.txt                  index.txt-20070813101924-07gd9i9d2jt124bf-1
              tools/win32/survey.txt         survey.txt-20070809075950-sf265mgu9oog8jjb-1
            renamed:
              bzrlib/patiencediff.py => bzrlib/_patiencediff_py.py cdvdifflib.py-20051106064558-f8f8097fbf0db4e4
              bzrlib/tests/blackbox/test_bundle.py => bzrlib/tests/blackbox/test_send.py test_bundle.py-20060616222707-c21c8b7ea5ef57b1
              doc/bug_trackers.txt => doc/en/user-guide/bug_trackers.txt bug_trackers.txt-20070713223459-khxdlcudraii95uv-1
              doc/centralized_workflow.txt => doc/en/user-guide/centralized_workflow.txt centralized_workflow-20060830194948-kspf52565xvgrlil-1
              doc/configuration.txt => doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
              doc/developers/HACKING => doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
              doc/http_smart_server.txt => doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
              doc/index.txt => doc/en/user-guide/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
              doc/plugins.txt => doc/en/user-guide/plugins.txt plugins.txt-20060314145616-525099a747f3ffdd
              doc/server.txt => doc/en/user-guide/server.txt server.txt-20060913044801-h939fvbwzz39gf7g-1
              doc/setting_up_email.txt => doc/en/user-guide/setting_up_email.txt setting_up_email.txt-20060314161707-fd242c8944346173
              doc/shared_repository_layouts.txt => doc/en/user-guide/shared_repository_layouts.txt shared_repository_la-20070502152030-bagewuqs18ns24o7-1
              doc/specifying_revisions.txt => doc/en/user-guide/specifying_revisions.txt specifying_revisions.txt-20060314161707-19deb139101bea33
              doc/tutorial.txt => doc/en/user-guide/tutorial.txt tutorial.txt-20050804190939-9dcbba2ef053bc84
              doc/using_aliases.txt => doc/en/user-guide/using_aliases.txt using_aliases.txt-20060314161707-c21d27fa2939e039
              doc/version_info.txt => doc/en/user-guide/version_info.txt version_info.txt-20060921215543-gju6o5xdic8w25np-1
            modified:
              .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
              INSTALL                        INSTALL-20051019070340-4b27f2fb240c7943
              Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              README                         README-20050309040720-8f368abf9f346b9d
              bzr                            bzr.py-20050313053754-5485f144c7006fa6
              bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
              bzrlib/annotate.py             annotate.py-20050922133147-7c60541d2614f022
              bzrlib/benchmarks/__init__.py  __init__.py-20060516064526-eb0d37c78e86065d
              bzrlib/benchmarks/bench_bundle.py bench_bundle.py-20060719055338-o1c6ieybbwt6c3zv-1
              bzrlib/benchmarks/bench_checkout.py bench_checkout.py-20060521233052-b52eba18ee46046b
              bzrlib/benchmarks/bench_commit.py bench_commit.py-20060522031508-4ea2551904e4becb
              bzrlib/benchmarks/bench_log.py bench_log.py-20060611214524-mr18tk29h8v0qb4x-1
              bzrlib/benchmarks/bench_status.py bench_status.py-20060520215801-2cc60f6da5625927
              bzrlib/benchmarks/tree_creator/kernel_like.py kernel_like.py-20060815024128-b16a7pn542u6b13k-1
              bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
              bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
              bzrlib/bundle/__init__.py      changeset.py-20050513021216-b02ab57fb9738913
              bzrlib/bundle/apply_bundle.py  apply_changeset.py-20050620044656-dba4eb8021a36f95
              bzrlib/bundle/bundle_data.py   read_changeset.py-20050619171944-c0d95aa685537640
              bzrlib/bundle/commands.py      __init__.py-20050617152058-1b6530d9ab85c11c
              bzrlib/bundle/serializer/__init__.py __init__.py-20051118175413-86b97db0b618feef
              bzrlib/bundle/serializer/v08.py v06.py-20051119041339-ee43f97270b01823
              bzrlib/bundle/serializer/v09.py v09.py-20060921014829-2l5elu11mu2ubvek-1
              bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
              bzrlib/check.py                check.py-20050309040759-f3a679400c06bcc1
              bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
              bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
              bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
              bzrlib/conflicts.py            conflicts.py-20051001061850-78ef952ba63d2b42
              bzrlib/debug.py                debug.py-20061102062349-vdhrw9qdpck8cl35-1
              bzrlib/delta.py                delta.py-20050729221636-54cf14ef94783d0a
              bzrlib/deprecated_graph.py     graph.py-20050905070950-b47dce53236c5e48
              bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
              bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
              bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
              bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
              bzrlib/graph.py                graph_walker.py-20070525030359-y852guab65d4wtn0-1
              bzrlib/help.py                 help.py-20050505025907-4dd7a6d63912f894
              bzrlib/help_topics.py          help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
              bzrlib/index.py                index.py-20070712131115-lolkarso50vjr64s-1
              bzrlib/info.py                 info.py-20050323235939-6bbfe7d9700b0b9b
              bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
              bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
              bzrlib/lockable_files.py       control_files.py-20051111201905-bb88546e799d669f
              bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
              bzrlib/lsprof.py               lsprof.py-20051208071030-833790916798ceed
              bzrlib/memorytree.py           memorytree.py-20060906023413-4wlkalbdpsxi2r4y-1
              bzrlib/merge.py                merge.py-20050513021216-953b65a438527106
              bzrlib/merge_directive.py      merge_directive.py-20070228184838-ja62280spt1g7f4x-1
              bzrlib/msgeditor.py            msgeditor.py-20050901111708-ef6d8de98f5d8f2f
              bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
              bzrlib/option.py               option.py-20051014052914-661fb36e76e7362f
              bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
              bzrlib/pack.py                 container.py-20070607160755-tr8zc26q18rn0jnb-1
              bzrlib/patches.py              patches.py-20050727183609-378c1cc5972ce908
              bzrlib/plugin.py               plugin.py-20050622060424-829b654519533d69
              bzrlib/reconcile.py            reweave_inventory.py-20051108164726-1e5e0934febac06e
              bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
              bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
              bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
              bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
              bzrlib/revision.py             revision.py-20050309040759-e77802c08f3999d5
              bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
              bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
              bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
              bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
              bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
              bzrlib/smart/server.py         server.py-20061110062051-chzu10y32vx8gvur-1
              bzrlib/smtp_connection.py      smtp_connection.py-20070618204456-nu6wag1ste4biuk2-1
              bzrlib/status.py               status.py-20050505062338-431bfa63ec9b19e6
              bzrlib/store/__init__.py       store.py-20050309040759-164dc5173d6406c2
              bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
              bzrlib/store/revision/text.py  text.py-20060303020652-e49155f0da4d14ab
              bzrlib/store/versioned/__init__.py weavestore.py-20050907094258-88262e0434babab9
              bzrlib/symbol_versioning.py    symbol_versioning.py-20060105104851-9ecf8af605d15a80
              bzrlib/tag.py                  tag.py-20070212110532-91cw79inah2cfozx-1
              bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
              bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
              bzrlib/tests/blackbox/test_add.py test_add.py-20060518072250-857e4f86f54a30b2
              bzrlib/tests/blackbox/test_added.py test_added.py-20060119085008-6b8b90369d42a26c
              bzrlib/tests/blackbox/test_aliases.py test_aliases.py-20060210230318-f0c08c9294dbfae1
              bzrlib/tests/blackbox/test_ancestry.py test_ancestry.py-20060131142602-6d9524c490537e90
              bzrlib/tests/blackbox/test_annotate.py testannotate.py-20051013044000-457f44801bfa9d39
              bzrlib/tests/blackbox/test_bound_branches.py test_bound_branches.py-20051109215527-2373188ad566c205
              bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
              bzrlib/tests/blackbox/test_cat.py test_cat.py-20051201162916-f0937e4e19ea24b3
              bzrlib/tests/blackbox/test_checkout.py test_checkout.py-20060211231752-a5cde67cf70af854
              bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
              bzrlib/tests/blackbox/test_conflicts.py test_conflicts.py-20060228151432-9723ebb925b999cf
              bzrlib/tests/blackbox/test_debug.py test_debug.py-20061026142942-q76cgg41785b3mdk-1
              bzrlib/tests/blackbox/test_diff.py test_diff.py-20060110203741-aa99ac93e633d971
              bzrlib/tests/blackbox/test_find_merge_base.py test_find_merge_base.py-20060131142124-f9d5c94df4505b70
              bzrlib/tests/blackbox/test_help.py test_help.py-20060216004358-4ee8a2a338f75a62
              bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
              bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
              bzrlib/tests/blackbox/test_locale.py test_lang.py-20060824204205-80v50j25qkuop7yn-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_merge_directive.py test_merge_directive-20070302012039-zh7uhy39biairtn0-1
              bzrlib/tests/blackbox/test_mv.py test_mv.py-20060705114902-33tkxz0o9cdshemo-1
              bzrlib/tests/blackbox/test_nick.py test_nick.py-20061105141046-p7zovcsit44uj4w9-1
              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_remove.py test_remove.py-20060530011439-fika5rm84lon0goe-1
              bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
              bzrlib/tests/blackbox/test_status.py teststatus.py-20050712014354-508855eb9f29f7dc
              bzrlib/tests/blackbox/test_tags.py test_tags.py-20070116132048-5h4qak2cm22jlb9e-1
              bzrlib/tests/blackbox/test_too_much.py blackbox.py-20050620052131-a7370d756399f615
              bzrlib/tests/blackbox/test_update.py test_update.py-20060212125639-c4dad1a5c56d5919
              bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
              bzrlib/tests/branch_implementations/test_bound_sftp.py test_bound_sftp.py-20051231055311-2f96048c4f0940ef
              bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
              bzrlib/tests/branch_implementations/test_commit.py test_commit.py-20070206022134-117z1i5b644p63r0-1
              bzrlib/tests/branch_implementations/test_hooks.py test_hooks.py-20070129154855-blhpwxmvjs07waei-1
              bzrlib/tests/branch_implementations/test_revision_history.py test_revision_histor-20070326062311-v7co92liyuchb80w-1
              bzrlib/tests/branch_implementations/test_sprout.py test_sprout.py-20070521151739-b8t8p7axw1h966ws-1
              bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
              bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
              bzrlib/tests/intertree_implementations/test_compare.py test_compare.py-20060724101752-09ysswo1a92uqyoz-2
              bzrlib/tests/interversionedfile_implementations/test_join.py test_join.py-20060302012326-9b5e9b0f0a03fedc
              bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
              bzrlib/tests/repository_implementations/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
              bzrlib/tests/repository_implementations/test_fileid_involved.py test_file_involved.py-20051215205901-728a172d1014daaa
              bzrlib/tests/repository_implementations/test_reconcile.py test_reconcile.py-20060223022332-572ef70a3288e369
              bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
              bzrlib/tests/revisionstore_implementations/test_all.py test_all.py-20060303020702-9b2d4c1d75407f31
              bzrlib/tests/test_annotate.py  test_annotate.py-20061213215015-sttc9agsxomls7q0-1
              bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
              bzrlib/tests/test_bundle.py    test.py-20050630184834-092aa401ab9f039c
              bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
              bzrlib/tests/test_commit.py    test_commit.py-20050914060732-279f057f8c295434
              bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
              bzrlib/tests/test_conflicts.py test_conflicts.py-20051006031059-e2dad9bbeaa5891f
              bzrlib/tests/test_diff.py      testdiff.py-20050727164403-d1a3496ebb12e339
              bzrlib/tests/test_dirstate.py  test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
              bzrlib/tests/test_errors.py    test_errors.py-20060210110251-41aba2deddf936a8
              bzrlib/tests/test_escaped_store.py test_escaped_store.py-20060216023929-6bcb9a067344959f
              bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
              bzrlib/tests/test_ftp_transport.py test_aftp_transport.-20060823221619-98mwjzxtwtkt527k-1
              bzrlib/tests/test_graph.py     test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
              bzrlib/tests/test_help.py      test_help.py-20070419045354-6q6rq15j9e2n5fna-1
              bzrlib/tests/test_http.py      testhttp.py-20051018020158-b2eef6e867c514d9
              bzrlib/tests/test_index.py     test_index.py-20070712131115-lolkarso50vjr64s-2
              bzrlib/tests/test_inv.py       testinv.py-20050722220913-1dc326138d1a5892
              bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
              bzrlib/tests/test_lockdir.py   test_lockdir.py-20060220222025-33d4221569a3d600
              bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
              bzrlib/tests/test_lsprof.py    test_lsprof.py-20070606095601-bctdndm8yhc0cqnc-1
              bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
              bzrlib/tests/test_merge_core.py test_merge_core.py-20050824132511-eb99b23a0eec641b
              bzrlib/tests/test_merge_directive.py test_merge_directive-20070228184838-ja62280spt1g7f4x-2
              bzrlib/tests/test_missing.py   test_missing.py-20051212000028-694fa4f658a81f48
              bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
              bzrlib/tests/test_options.py   testoptions.py-20051014093702-96457cfc86319a8f
              bzrlib/tests/test_osutils.py   test_osutils.py-20051201224856-e48ee24c12182989
              bzrlib/tests/test_pack.py      test_container.py-20070607160755-tr8zc26q18rn0jnb-2
              bzrlib/tests/test_patches.py   test_patches.py-20051231203844-f4974d20f6aea09c
              bzrlib/tests/test_permissions.py test_permissions.py-20051215004520-ccf475789c80e80c
              bzrlib/tests/test_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
              bzrlib/tests/test_read_bundle.py test_read_bundle.py-20060615211421-ud8cwr1ulgd914zf-1
              bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
              bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
              bzrlib/tests/test_revert.py    test_revert.py-20060828180832-fqb1v6ecpyvnlitj-1
              bzrlib/tests/test_revision.py  testrevision.py-20050804210559-46f5e1eb67b01289
              bzrlib/tests/test_revisionnamespaces.py testrevisionnamespaces.py-20050711050225-8b4af89e6b1efe84
              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_smtp_connection.py test_smtp_connection-20070618204509-wuyxc0r0ztrecv7e-1
              bzrlib/tests/test_source.py    test_source.py-20051207061333-a58dea6abecc030d
              bzrlib/tests/test_store.py     teststore.py-20050826022702-f6caadb647395769
              bzrlib/tests/test_tag.py       test_tag.py-20070212110532-91cw79inah2cfozx-2
              bzrlib/tests/test_trace.py     testtrace.py-20051110225523-a21117fc7a07eeff
              bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
              bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
              bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
              bzrlib/tests/test_tree.py      test_tree.py-20060724065232-khgrr0vvmt6ih0mi-1
              bzrlib/tests/test_upgrade.py   test_upgrade.py-20051004040251-555fe1d2bae1bc71
              bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
              bzrlib/tests/test_weave.py     testknit.py-20050627023648-9833cc5562ffb785
              bzrlib/tests/test_xml.py       test_xml.py-20050905091053-80b45588931a9b35
              bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
              bzrlib/tests/tree_implementations/test_tree.py test_tree.py-20061215160206-usu7lwcj8aq2n3br-1
              bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
              bzrlib/tests/workingtree_implementations/test_executable.py test_executable.py-20060628162557-tr7h57kl80l3ma8i-1
              bzrlib/tests/workingtree_implementations/test_inv.py test_inv.py-20070311221604-ighlq8tbn5xq0kuo-1
              bzrlib/tests/workingtree_implementations/test_is_ignored.py test_is_ignored.py-20060518083307-a5b383dd4d070083
              bzrlib/tests/workingtree_implementations/test_merge_from_branch.py test_merge_from_bran-20060904034200-12jxyk2zlhpufxe1-1
              bzrlib/tests/workingtree_implementations/test_remove.py test_remove.py-20070413183901-rvnp85rtc0q0sclp-1
              bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
              bzrlib/trace.py                trace.py-20050309040759-c8ed824bdcd4748a
              bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
              bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
              bzrlib/transport/chroot.py     chroot.py-20061011104729-0us9mgm97z378vnt-1
              bzrlib/transport/decorator.py  decorator.py-20060402223305-e913a0f25319ab42
              bzrlib/transport/fakevfat.py   fakevfat.py-20060407072414-d59939fa1d6c79d9
              bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
              bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
              bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
              bzrlib/transport/http/_urllib.py _urlgrabber.py-20060113083826-0bbf7d992fbf090c
              bzrlib/transport/http/wsgi.py  wsgi.py-20061005091552-rz8pva0olkxv0sd8-2
              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/transport/ssh.py        ssh.py-20060824042150-0s9787kng6zv1nwq-1
              bzrlib/tree.py                 tree.py-20050309040759-9d5f2496be663e77
              bzrlib/ui/__init__.py          ui.py-20050824083933-8cf663c763ba53a9
              bzrlib/ui/text.py              text.py-20051130153916-2e438cffc8afc478
              bzrlib/version.py              version.py-20060816024207-ves6ult9a11taj9t-1
              bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
              bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
              bzrlib/win32utils.py           win32console.py-20051021033308-123c6c929d04973d
              bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
              bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
              bzrlib/xml4.py                 xml4.py-20050916091259-db5ab55e7e6ca324
              bzrlib/xml5.py                 xml5.py-20050907032657-aac8f960815b66b1
              bzrlib/xml6.py                 xml6.py-20060823042456-dbaaq4atrche7xy5-1
              bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
              doc/bazaar-vcs.org.kid         bazaarvcs.org.kid-20060929181918-huv7bgmdey0ktqci-1
              doc/default.css                default.css-20060622101119-tgwtdci8z769bjb9-1
              doc/developers/bundles.txt     bundles.txt-20070621030528-qkjnugd7iyud6ow3-1
              doc/developers/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
              doc/developers/performance-contributing.txt performancecontribut-20070621063612-ac4zhhagjzkr21qp-1
              doc/developers/performance-roadmap.txt performanceroadmap.t-20070507174912-mwv3xv517cs4sisd-2
              doc/developers/performance.dot performance.dot-20070527173558-rqaqxn1al7vzgcto-3
              doc/developers/profiling.txt   profiling.txt-20070531045713-j15mxufywgzwdeu8-1
              doc/developers/repository.txt  repository.txt-20070709152006-xkhlek456eclha4u-1
              setup.py                       setup.py-20050314065409-02f8a0a6e3f9bc70
              tools/doc_generate/autodoc_man.py bzrman.py-20050601153041-0ff7f74de456d15e
              tools/doc_generate/autodoc_rstx.py autodoc_rstx.py-20060420024836-3e0d4a526452193c
              tools/rst2html.py              rst2html.py-20060817120932-gn177u8v0008txhu-1
              tools/rst2prettyhtml.py        rst2prettyhtml.py-20060929181914-t7dh62f2wxi0i5aj-1
              tools/win32/bzr-win32-bdist-postinstall.py bzrwin32bdistpostinstall.py-20060629085133-098bsfj3va8jc0ql-1
              tools/win32/bzr.iss.cog        bzr.iss.cog-20060622100836-b3yup582rt3y0nvm-5
              tools/win32/ostools.py         ostools.py-20060731163025-npjffm46rgnkl50d-1
              bzrlib/_patiencediff_py.py     cdvdifflib.py-20051106064558-f8f8097fbf0db4e4
              bzrlib/tests/blackbox/test_send.py test_bundle.py-20060616222707-c21c8b7ea5ef57b1
              doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
              doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
              doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
              doc/en/user-guide/index.txt    index.txt-20060622101119-tgwtdci8z769bjb9-2
              doc/en/user-guide/server.txt   server.txt-20060913044801-h939fvbwzz39gf7g-1
              doc/en/user-guide/tutorial.txt tutorial.txt-20050804190939-9dcbba2ef053bc84
            ------------------------------------------------------------
            revno: 2592.1.25.2.7.1.1.11.2
            revision-id: mbp at sourcefrog.net-20070914032655-fpq0pfpja4kesuij
            parent: mbp at sourcefrog.net-20070914025956-pz4klu0csp7m43jb
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: makefile-cleanup
            timestamp: Fri 2007-09-14 13:26:55 +1000
            message:
              Put back better rules for building ctags
            modified:
              .bzrignore                     bzrignore-20050311232317-81f7b71efa2db11a
              Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
            ------------------------------------------------------------
            revno: 2592.1.25.2.7.1.1.11.1
            revision-id: mbp at sourcefrog.net-20070914025956-pz4klu0csp7m43jb
            parent: pqm at pqm.ubuntu.com-20070717180333-5smmeduk2q3sbzvw
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: build
            timestamp: Fri 2007-09-14 12:59:56 +1000
            message:
              (trivial) Remove obsolete Makefile targets
            modified:
              Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
        ------------------------------------------------------------
        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.5
        revision-id: pqm at pqm.ubuntu.com-20070914043128-s7ck70bf5bzefbiq
        parent: pqm at pqm.ubuntu.com-20070914031609-ccdhl0ebzrohpa1t
        parent: ian.clatworthy at internode.on.net-20070914025553-63arf9n0j8kisqdi
        committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
        branch nick: +trunk
        timestamp: Fri 2007-09-14 05:31:28 +0100
        message:
          Minor tree & dirstate code cleanups (Ian Clatworthy)
        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: 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.3.1.1
        revision-id: ian.clatworthy at internode.on.net-20070914025553-63arf9n0j8kisqdi
        parent: pqm at pqm.ubuntu.com-20070914020622-8ebz7llponlts1na
        parent: ian.clatworthy at internode.on.net-20070914022532-72l99l9pxew366ct
        committer: Ian Clatworthy <ian.clatworthy at internode.on.net>
        branch nick: ianc-integration
        timestamp: Fri 2007-09-14 12:55:53 +1000
        message:
          Minor tree & dirstate code cleanups (Ian Clatworthy)
        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: 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.1.2.2
        revision-id: ian.clatworthy at internode.on.net-20070914022532-72l99l9pxew366ct
        parent: ian.clatworthy at internode.on.net-20070914011426-wdtanslfmknxs1g5
        committer: Ian Clatworthy <ian.clatworthy at internode.on.net>
        branch nick: bzr.code-cleanup
        timestamp: Fri 2007-09-14 12:25:32 +1000
        message:
          review feedback
        modified:
          bzrlib/dirstate.py             dirstate.py-20060728012006-d6mvoihjb3je9peu-1
          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.1.2.1
        revision-id: ian.clatworthy at internode.on.net-20070914011426-wdtanslfmknxs1g5
        parent: pqm at pqm.ubuntu.com-20070913193317-hi3rhwxhbrviw7hz
        committer: Ian Clatworthy <ian.clatworthy at internode.on.net>
        branch nick: bzr.code-cleanup
        timestamp: Fri 2007-09-14 11:14:26 +1000
        message:
          minor tree & dirstate code cleanups
        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: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.48
    revision-id: robertc at robertcollins.net-20070914034315-pyf153e6rrw792z4
    parent: robertc at robertcollins.net-20070914000845-qac6s3w4xj41ivmh
    parent: pqm at pqm.ubuntu.com-20070914031609-ccdhl0ebzrohpa1t
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: commit
    timestamp: Fri 2007-09-14 13:43:15 +1000
    message:
      Merge bzr.dev.
    added:
      bzrlib/tests/blackbox/test_unknowns.py test_unknowns.py-20070905015344-74tg6s1synijo2oe-1
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/benchmarks/tree_creator/kernel_like.py kernel_like.py-20060815024128-b16a7pn542u6b13k-1
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
      bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
      bzrlib/lsprof.py               lsprof.py-20051208071030-833790916798ceed
      bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
      bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
      bzrlib/tests/test_commit.py    test_commit.py-20050914060732-279f057f8c295434
      bzrlib/tests/test_lsprof.py    test_lsprof.py-20070606095601-bctdndm8yhc0cqnc-1
      bzrlib/tests/test_xml.py       test_xml.py-20050905091053-80b45588931a9b35
      bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
      bzrlib/xml4.py                 xml4.py-20050916091259-db5ab55e7e6ca324
      bzrlib/xml5.py                 xml5.py-20050907032657-aac8f960815b66b1
      bzrlib/xml6.py                 xml6.py-20060823042456-dbaaq4atrche7xy5-1
      bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
        ------------------------------------------------------------
        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.4
        revision-id: pqm at pqm.ubuntu.com-20070914031609-ccdhl0ebzrohpa1t
        parent: pqm at pqm.ubuntu.com-20070914020622-8ebz7llponlts1na
        parent: robertc at robertcollins.net-20070914021732-q43pb6khebypqnjm
        committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
        branch nick: +trunk
        timestamp: Fri 2007-09-14 04:16:09 +0100
        message:
          (robertc) Reduce the time to serialise inventories by 20 percent and align the api for knit insertion. (Robert Collins)
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/benchmarks/tree_creator/kernel_like.py kernel_like.py-20060815024128-b16a7pn542u6b13k-1
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/tests/test_xml.py       test_xml.py-20050905091053-80b45588931a9b35
          bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
          bzrlib/xml4.py                 xml4.py-20050916091259-db5ab55e7e6ca324
          bzrlib/xml5.py                 xml5.py-20050907032657-aac8f960815b66b1
          bzrlib/xml6.py                 xml6.py-20060823042456-dbaaq4atrche7xy5-1
          bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.47
    revision-id: robertc at robertcollins.net-20070914000845-qac6s3w4xj41ivmh
    parent: robertc at robertcollins.net-20070913032229-vdojubs6akxlk4ao
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: commit
    timestamp: Fri 2007-09-14 10:08:45 +1000
    message:
      Unbreak weaves.
    modified:
      bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.46
    revision-id: robertc at robertcollins.net-20070913032229-vdojubs6akxlk4ao
    parent: robertc at robertcollins.net-20070912050636-c6fu3lybn1tbftk5
    parent: pqm at pqm.ubuntu.com-20070912222627-zvqit350mf6gvrbh
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: commit
    timestamp: Thu 2007-09-13 13:22:29 +1000
    message:
      Merge bzr.dev
    added:
      bzrlib/tests/commands/test_update.py test_update.py-20070910091045-8uyp8v73j926l1g2-1
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzr                            bzr.py-20050313053754-5485f144c7006fa6
      bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
      bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
      bzrlib/help_topics.py          help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
      bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
      bzrlib/reconcile.py            reweave_inventory.py-20051108164726-1e5e0934febac06e
      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/tag.py                  tag.py-20070212110532-91cw79inah2cfozx-1
      bzrlib/tests/commands/__init__.py __init__.py-20070520095518-ecfl8531fxgjeycj-1
      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/test_tag.py       test_tag.py-20070212110532-91cw79inah2cfozx-2
      bzrlib/transport/__init__.py   transport.py-20050711165921-4978aa7ce1285ad5
      bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
      bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
      bzrlib/workingtree.py          workingtree.py-20050511021032-29b6ec0a681e02e3
      doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
    ------------------------------------------------------------
    revno: 2592.1.25.2.7.1.28.1.6.1.3.1.9.2.1.3.74.1.45
    revision-id: robertc at robertcollins.net-20070912050636-c6fu3lybn1tbftk5
    parent: robertc at robertcollins.net-20070911090940-2lbw0h6ev8z2zp6w
    committer: Robert Collins <robertc at robertcollins.net>
    branch nick: commit
    timestamp: Wed 2007-09-12 15:06:36 +1000
    message:
      Remove another stat by using path_content_summary to avoid a has_filename call.
    modified:
      bzrlib/commit.py               commit.py-20050511101309-79ec1a0168e0e825
=== modified file '.bzrignore'
--- a/.bzrignore	2007-08-10 07:43:06 +0000
+++ b/.bzrignore	2007-09-14 06:31:28 +0000
@@ -19,6 +19,7 @@
 [#]*#
 .#*
 ./tags
+./TAGS
 # The shelf plugin uses this dir
 ./.shelf
 # Mac droppings

=== modified file 'Makefile'
--- a/Makefile	2007-08-28 01:49:28 +0000
+++ b/Makefile	2007-09-14 06:31:28 +0000
@@ -33,10 +33,10 @@
 	@echo "Running all tests with no locale."
 	LC_CTYPE= LANG=C LC_ALL= ./bzr selftest -1v $(tests) 2>&1 | sed -e 's/^/[ascii] /'
 
-check-msgeditor:
-	./bzr --no-plugins selftest -v msgeditor
-
 # Run Python style checker (apt-get install pyflakes)
+#
+# Note that at present this gives many false warnings, because it doesn't
+# know about identifiers loaded through lazy_import.
 pyflakes:
 	pyflakes bzrlib
 
@@ -58,11 +58,15 @@
 check-api-docs:
 	PYTHONPATH=$(PWD) python tools/bzr_epydoc --check --docformat 'restructuredtext en' $(docfiles)
 
-# build emacs cross-reference
-tag_files=./bzr ./bzrlib/*py ./bzrlib/selftest/*.py
-TAGS: $(tag_files)
-	ctags-exuberant -e $(tag_files)
-
+# build tags for emacs and vim
+TAGS:
+	ctags -R -e bzrlib
+
+tags:
+	ctags -R bzrlib
+
+# these are treated as phony so they'll always be rebuilt - it's pretty quick
+.PHONY: TAGS tags
 
 ### Documentation ###
 

=== modified file 'NEWS'
--- a/NEWS	2007-09-14 02:46:36 +0000
+++ b/NEWS	2007-09-20 22:58:47 +0000
@@ -24,6 +24,9 @@
 
   IMPROVEMENTS:
 
+   * Mutt is now a supported mail client; set ``mail_client=mutt`` in your
+     bazaar.conf and ``send`` will use mutt. (Keir Mierle)
+
   BUG FIXES:
 
    * The basename, not the full path, is now used when checking whether
@@ -36,6 +39,9 @@
      longer throws away the profiling data if this command is run with
      ``--lsprof-file callgrind.out.ci`` say. (Ian Clatworthy)
 
+   * ``WorkingTree.rename_one`` will now raise an error if normalisation of the
+     new path causes bzr to be unable to access the file. (Robert Collins)
+
   API BREAKS:
 
    * The ``VersionedFile`` interface now allows content checks to be bypassed
@@ -49,6 +55,10 @@
 
   INTERNALS:
 
+   * 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 method on xml serialisers, write_inventory_to_lines, which matches the
      API used by knits for adding content. (Robert Collins)
 
@@ -335,10 +345,6 @@
      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/builtins.py'
--- a/bzrlib/builtins.py	2007-09-13 04:28:56 +0000
+++ b/bzrlib/builtins.py	2007-09-16 19:29:00 +0000
@@ -3846,9 +3846,9 @@
     the preferred client can't be found (or used), your editor will be used.
     
     To use a specific mail program, set the mail_client configuration option.
-    (For Thunderbird 1.5, this works around some bugs.)  Supported values are
-    "thunderbird", "evolution", "editor", "xdg-email", "mapi", "kmail" and
-    "default".
+    (For Thunderbird 1.5, this works around some bugs.)  Supported values for
+    specific clients are "evolution", "kmail", "mutt", and "thunderbird";
+    generic options are "default", "editor", "mapi", and "xdg-email".
 
     If mail is being sent, a to address is required.  This can be supplied
     either on the commandline, or by setting the submit_to configuration

=== modified file 'bzrlib/commit.py'
--- a/bzrlib/commit.py	2007-09-14 02:46:36 +0000
+++ b/bzrlib/commit.py	2007-09-20 22:58:47 +0000
@@ -723,8 +723,6 @@
             # deleted files matching that filter.
             if is_inside_any(deleted_paths, path):
                 continue
-            # TODO: have the builder do the nested commit just-in-time IF and
-            # only if needed.
             content_summary = self.work_tree.path_content_summary(path)
             if not specific_files or is_inside_any(specific_files, path):
                 if content_summary[0] == 'missing':
@@ -732,6 +730,8 @@
                     self.reporter.missing(path)
                     deleted_ids.append(file_id)
                     continue
+            # TODO: have the builder do the nested commit just-in-time IF and
+            # only if needed.
             if content_summary[0] == 'tree-reference':
                 # enforce repository nested tree policy.
                 if (not self.work_tree.supports_tree_reference() or

=== modified file 'bzrlib/config.py'
--- a/bzrlib/config.py	2007-08-14 16:39:00 +0000
+++ b/bzrlib/config.py	2007-09-04 17:50:27 +0000
@@ -150,13 +150,16 @@
         try:
             mail_client_class = {
                 None: mail_client.DefaultMail,
+                # Specific clients
+                'evolution': mail_client.Evolution,
+                'kmail': mail_client.KMail,
+                'mutt': mail_client.Mutt,
+                'thunderbird': mail_client.Thunderbird,
+                # Generic options
                 'default': mail_client.DefaultMail,
                 'editor': mail_client.Editor,
-                'thunderbird': mail_client.Thunderbird,
-                'evolution': mail_client.Evolution,
                 'mapi': mail_client.MAPIClient,
                 'xdg-email': mail_client.XDGEmail,
-                'kmail': mail_client.KMail,
             }[selected_client]
         except KeyError:
             raise errors.UnknownMailClient(selected_client)

=== modified file 'bzrlib/dirstate.py'
--- a/bzrlib/dirstate.py	2007-07-21 18:27:19 +0000
+++ b/bzrlib/dirstate.py	2007-09-17 05:33:56 +0000
@@ -29,9 +29,9 @@
 
 dirstate format = header line, full checksum, row count, parent details,
  ghost_details, entries;
-header line = "#bazaar dirstate flat format 2", NL;
+header line = "#bazaar dirstate flat format 3", NL;
 full checksum = "crc32: ", ["-"], WHOLE_NUMBER, NL;
-row count = "num_entries: ", digit, NL;
+row count = "num_entries: ", WHOLE_NUMBER, NL;
 parent_details = WHOLE NUMBER, {REVISION_ID}* NL;
 ghost_details = WHOLE NUMBER, {REVISION_ID}*, NL;
 entries = {entry};
@@ -118,7 +118,7 @@
 where we need id->path mapping; we also usually read the whole file, so
 I'm going to skip that for the moment, as we have the ability to locate
 via bisect any path in any tree, and if we lookup things by path, we can
-accumulate a id->path mapping as we go, which will tend to match what we
+accumulate an id->path mapping as we go, which will tend to match what we
 looked for.
 
 I plan to implement this asap, so please speak up now to alter/tweak the
@@ -143,7 +143,7 @@
 Locking:
  Eventually reuse dirstate objects across locks IFF the dirstate file has not
  been modified, but will require that we flush/ignore cached stat-hit data
- because we wont want to restat all files on disk just because a lock was
+ because we won't want to restat all files on disk just because a lock was
  acquired, yet we cannot trust the data after the previous lock was released.
 
 Memory representation:
@@ -162,13 +162,14 @@
       manageable number. Will scale badly on trees with 10K entries in a 
       single directory. compare with Inventory.InventoryDirectory which has
       a dictionary for the children. No bisect capability, can only probe for
-      exact matches, or grab all elements and sorta.
-    - Whats the risk of error here? Once we have the base format being processed
+      exact matches, or grab all elements and sort.
+    - What's the risk of error here? Once we have the base format being processed
       we should have a net win regardless of optimality. So we are going to 
-      go with what seems reasonably.
+      go with what seems reasonable.
 open questions:
 
-maybe we should do a test profile of these core structure - 10K simulated searches/lookups/etc?
+Maybe we should do a test profile of the core structure - 10K simulated
+searches/lookups/etc?
 
 Objects for each row?
 The lifetime of Dirstate objects is current per lock, but see above for
@@ -224,7 +225,7 @@
     # jam 20060614 it isn't really worth removing more entries if we
     # are going to leave it in packed form.
     # With only st_mtime and st_mode filesize is 5.5M and read time is 275ms
-    # With all entries filesize is 5.9M and read time is mabye 280ms
+    # With all entries, filesize is 5.9M and read time is maybe 280ms
     # well within the noise margin
 
     # base64 encoding always adds a final newline, so strip it off
@@ -364,7 +365,7 @@
         # find the location in the block.
         # check its not there
         # add it.
-        #------- copied from inventory.make_entry
+        #------- copied from inventory.ensure_normalized_name - keep synced.
         # --- normalized_filename wants a unicode basename only, so get one.
         dirname, basename = osutils.split(path)
         # we dont import normalized_filename directly because we want to be
@@ -651,7 +652,7 @@
         _bisect_dirblocks is meant to find the contents of directories, which
         differs from _bisect, which only finds individual entries.
 
-        :param dir_list: An sorted list of directory names ['', 'dir', 'foo'].
+        :param dir_list: A sorted list of directory names ['', 'dir', 'foo'].
         :return: A map from dir => entries_for_dir
         """
         # TODO: jam 20070223 A lot of the bisecting logic could be shared
@@ -1330,8 +1331,8 @@
             be attempted.
         :return: A tuple describing where the path is located, or should be
             inserted. The tuple contains four fields: the block index, the row
-            index, anda two booleans are True when the directory is present, and
-            when the entire path is present.  There is no guarantee that either
+            index, the directory is present (boolean), the entire path is
+            present (boolean).  There is no guarantee that either
             coordinate is currently reachable unless the found field for it is
             True. For instance, a directory not present in the searched tree
             may be returned with a value one greater than the current highest
@@ -1359,7 +1360,7 @@
         return block_index, entry_index, True, False
 
     def _get_entry(self, tree_index, fileid_utf8=None, path_utf8=None):
-        """Get the dirstate entry for path in tree tree_index
+        """Get the dirstate entry for path in tree tree_index.
 
         If either file_id or path is supplied, it is used as the key to lookup.
         If both are supplied, the fastest lookup is used, and an error is
@@ -1404,7 +1405,7 @@
                     continue
                 # WARNING: DO not change this code to use _get_block_entry_index
                 # as that function is not suitable: it does not use the key
-                # to lookup, and thus the wront coordinates are returned.
+                # to lookup, and thus the wrong coordinates are returned.
                 block = self._dirblocks[block_index][1]
                 entry_index, present = self._find_entry_index(key, block)
                 if present:
@@ -1511,9 +1512,9 @@
         return self._id_index
 
     def _get_output_lines(self, lines):
-        """format lines for final output.
+        """Format lines for final output.
 
-        :param lines: A sequece of lines containing the parents list and the
+        :param lines: A sequence of lines containing the parents list and the
             path lines.
         """
         output_lines = [DirState.HEADER_FORMAT_3]
@@ -1527,7 +1528,7 @@
         return output_lines
 
     def _make_deleted_row(self, fileid_utf8, parents):
-        """Return a deleted for for fileid_utf8."""
+        """Return a deleted row for fileid_utf8."""
         return ('/', 'RECYCLED.BIN', 'file', fileid_utf8, 0, DirState.NULLSTAT,
             ''), parents
 
@@ -1587,7 +1588,7 @@
             self._read_header()
 
     def _read_prelude(self):
-        """Read in the prelude header of the dirstate file
+        """Read in the prelude header of the dirstate file.
 
         This only reads in the stuff that is not connected to the crc
         checksum. The position will be correct to read in the rest of
@@ -1610,9 +1611,9 @@
 
         We reuse the existing file, because that prevents race conditions with
         file creation, and use oslocks on it to prevent concurrent modification
-        and reads - because dirstates incremental data aggretation is not
+        and reads - because dirstate's incremental data aggregation is not
         compatible with reading a modified file, and replacing a file in use by
-        another process is impossible on windows.
+        another process is impossible on Windows.
 
         A dirstate in read only mode should be smart enough though to validate
         that the file has not changed, and otherwise discard its cache and
@@ -1679,7 +1680,7 @@
             "path_id %r is not a plain string" % (new_id,)
         self._read_dirblocks_if_needed()
         if len(path):
-            # logic not written
+            # TODO: logic not written
             raise NotImplementedError(self.set_path_id)
         # TODO: check new id is unique
         entry = self._get_entry(0, path_utf8=path)
@@ -1787,7 +1788,7 @@
                         # this file id is at a different path in one of the
                         # other trees, so put absent pointers there
                         # This is the vertical axis in the matrix, all pointing
-                        # tot he real path.
+                        # to the real path.
                         by_path[entry_key][tree_index] = ('r', path_utf8, 0, False, '')
                 # by path consistency: Insert into an existing path record (trivial), or 
                 # add a new one with relocation pointers for the other tree indexes.
@@ -1862,7 +1863,7 @@
         new_iterator = new_inv.iter_entries_by_dir()
         # we will be modifying the dirstate, so we need a stable iterator. In
         # future we might write one, for now we just clone the state into a
-        # list - which is a shallow copy, so each 
+        # list - which is a shallow copy.
         old_iterator = iter(list(self._iter_entries()))
         # both must have roots so this is safe:
         current_new = new_iterator.next()
@@ -1936,14 +1937,14 @@
     def _make_absent(self, current_old):
         """Mark current_old - an entry - as absent for tree 0.
 
-        :return: True if this was the last details entry for they entry key:
+        :return: True if this was the last details entry for the entry key:
             that is, if the underlying block has had the entry removed, thus
             shrinking in length.
         """
         # build up paths that this id will be left at after the change is made,
         # so we can update their cross references in tree 0
         all_remaining_keys = set()
-        # Dont check the working tree, because its going.
+        # Dont check the working tree, because it's going.
         for details in current_old[1][1:]:
             if details[0] not in ('a', 'r'): # absent, relocated
                 all_remaining_keys.add(current_old[0])
@@ -2238,7 +2239,7 @@
         self._split_path_cache = {}
 
     def lock_read(self):
-        """Acquire a read lock on the dirstate"""
+        """Acquire a read lock on the dirstate."""
         if self._lock_token is not None:
             raise errors.LockContention(self._lock_token)
         # TODO: jam 20070301 Rather than wiping completely, if the blocks are
@@ -2251,7 +2252,7 @@
         self._wipe_state()
 
     def lock_write(self):
-        """Acquire a write lock on the dirstate"""
+        """Acquire a write lock on the dirstate."""
         if self._lock_token is not None:
             raise errors.LockContention(self._lock_token)
         # TODO: jam 20070301 Rather than wiping completely, if the blocks are
@@ -2264,7 +2265,7 @@
         self._wipe_state()
 
     def unlock(self):
-        """Drop any locks held on the dirstate"""
+        """Drop any locks held on the dirstate."""
         if self._lock_token is None:
             raise errors.LockNotHeld(self)
         # TODO: jam 20070301 Rather than wiping completely, if the blocks are
@@ -2278,7 +2279,7 @@
         self._split_path_cache = {}
 
     def _requires_lock(self):
-        """Checks that a lock is currently held by someone on the dirstate"""
+        """Check that a lock is currently held by someone on the dirstate."""
         if not self._lock_token:
             raise errors.ObjectNotLocked(self)
 

=== modified file 'bzrlib/inventory.py'
--- a/bzrlib/inventory.py	2007-09-11 09:09:40 +0000
+++ b/bzrlib/inventory.py	2007-09-17 06:10:36 +0000
@@ -1301,6 +1301,7 @@
         This does not move the working file.
         """
         file_id = osutils.safe_file_id(file_id)
+        new_name = ensure_normalized_name(new_name)
         if not is_valid_name(new_name):
             raise BzrError("not an acceptable filename: %r" % new_name)
 
@@ -1348,7 +1349,21 @@
         file_id = generate_ids.gen_file_id(name)
     else:
         file_id = osutils.safe_file_id(file_id)
-
+    name = ensure_normalized_name(name)
+    try:
+        factory = entry_factory[kind]
+    except KeyError:
+        raise BzrError("unknown kind %r" % kind)
+    return factory(file_id, name, parent_id)
+
+
+def ensure_normalized_name(name):
+    """Normalize name.
+
+    :raises InvalidNormalization: When name is not normalized, and cannot be
+        accessed on this platform by the normalized path.
+    :return: The NFC/NFKC normalised version of name.
+    """
     #------- This has been copied to bzrlib.dirstate.DirState.add, please
     # keep them synchronised.
     # we dont import normalized_filename directly because we want to be
@@ -1356,17 +1371,12 @@
     norm_name, can_access = osutils.normalized_filename(name)
     if norm_name != name:
         if can_access:
-            name = norm_name
+            return norm_name
         else:
             # TODO: jam 20060701 This would probably be more useful
             #       if the error was raised with the full path
             raise errors.InvalidNormalization(name)
-
-    try:
-        factory = entry_factory[kind]
-    except KeyError:
-        raise BzrError("unknown kind %r" % kind)
-    return factory(file_id, name, parent_id)
+    return name
 
 
 _NAME_RE = None

=== modified file 'bzrlib/mail_client.py'
--- a/bzrlib/mail_client.py	2007-08-21 01:26:02 +0000
+++ b/bzrlib/mail_client.py	2007-09-03 23:54:22 +0000
@@ -183,6 +183,23 @@
         return ['mailto:%s?%s' % (to or '', '&'.join(options_list))]
 
 
+class Mutt(ExternalMailClient):
+    """Mutt mail client."""
+
+    _client_commands = ['mutt']
+
+    def _get_compose_commandline(self, to, subject, attach_path):
+        """See ExternalMailClient._get_compose_commandline"""
+        message_options = []
+        if subject is not None:
+            message_options.extend(['-s', subject ])
+        if attach_path is not None:
+            message_options.extend(['-a', attach_path])
+        if to is not None:
+            message_options.append(to)
+        return message_options
+
+
 class Thunderbird(ExternalMailClient):
     """Mozilla Thunderbird (or Icedove)
 

=== modified file 'bzrlib/repofmt/weaverepo.py'
--- a/bzrlib/repofmt/weaverepo.py	2007-09-10 02:04:04 +0000
+++ b/bzrlib/repofmt/weaverepo.py	2007-09-20 22:58:47 +0000
@@ -416,7 +416,8 @@
         versionedfile = self.repository.weave_store.get_weave_or_empty(
             file_id, self.repository.get_transaction())
         result = versionedfile.add_lines(
-            self._new_revision_id, parents, new_lines)[0:2]
+            self._new_revision_id, parents, new_lines,
+            nostore_sha=nostore_sha)[0:2]
         versionedfile.clear_cache()
         return result
 

=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2007-09-13 22:46:46 +0000
+++ b/bzrlib/repository.py	2007-09-20 22:58:47 +0000
@@ -818,7 +818,7 @@
         :param revision_id: Optional revision id.
         """
         revision_id = osutils.safe_revision_id(revision_id)
-        result = self.__class__._commit_builder_class(self, parents, config,
+        result = self._commit_builder_class(self, parents, config,
             timestamp, timezone, committer, revprops, revision_id)
         self.start_write_group()
         return result

=== modified file 'bzrlib/tests/test_config.py'
--- a/bzrlib/tests/test_config.py	2007-08-14 16:39:00 +0000
+++ b/bzrlib/tests/test_config.py	2007-09-04 17:50:27 +0000
@@ -1011,18 +1011,7 @@
         client = config.get_mail_client()
         self.assertIsInstance(client, mail_client.DefaultMail)
 
-        config.set_user_option('mail_client', 'default')
-        client = config.get_mail_client()
-        self.assertIsInstance(client, mail_client.DefaultMail)
-
-        config.set_user_option('mail_client', 'editor')
-        client = config.get_mail_client()
-        self.assertIsInstance(client, mail_client.Editor)
-
-        config.set_user_option('mail_client', 'thunderbird')
-        client = config.get_mail_client()
-        self.assertIsInstance(client, mail_client.Thunderbird)
-
+        # Specific clients
         config.set_user_option('mail_client', 'evolution')
         client = config.get_mail_client()
         self.assertIsInstance(client, mail_client.Evolution)
@@ -1031,14 +1020,31 @@
         client = config.get_mail_client()
         self.assertIsInstance(client, mail_client.KMail)
 
+        config.set_user_option('mail_client', 'mutt')
+        client = config.get_mail_client()
+        self.assertIsInstance(client, mail_client.Mutt)
+
+        config.set_user_option('mail_client', 'thunderbird')
+        client = config.get_mail_client()
+        self.assertIsInstance(client, mail_client.Thunderbird)
+
+        # Generic options
+        config.set_user_option('mail_client', 'default')
+        client = config.get_mail_client()
+        self.assertIsInstance(client, mail_client.DefaultMail)
+
+        config.set_user_option('mail_client', 'editor')
+        client = config.get_mail_client()
+        self.assertIsInstance(client, mail_client.Editor)
+
+        config.set_user_option('mail_client', 'mapi')
+        client = config.get_mail_client()
+        self.assertIsInstance(client, mail_client.MAPIClient)
+
         config.set_user_option('mail_client', 'xdg-email')
         client = config.get_mail_client()
         self.assertIsInstance(client, mail_client.XDGEmail)
 
-        config.set_user_option('mail_client', 'mapi')
-        client = config.get_mail_client()
-        self.assertIsInstance(client, mail_client.MAPIClient)
-
         config.set_user_option('mail_client', 'firebird')
         self.assertRaises(errors.UnknownMailClient, config.get_mail_client)
 

=== modified file 'bzrlib/tests/test_mail_client.py'
--- a/bzrlib/tests/test_mail_client.py	2007-08-14 17:06:51 +0000
+++ b/bzrlib/tests/test_mail_client.py	2007-09-03 23:54:22 +0000
@@ -20,6 +20,17 @@
     urlutils,
     )
 
+class TestMutt(tests.TestCase):
+
+    def test_commandline(self):
+        mutt = mail_client.Mutt(None)
+        commandline = mutt._get_compose_commandline(None, None, 'file%')
+        self.assertEqual(['-a', 'file%'], commandline)
+        commandline = mutt._get_compose_commandline('jrandom at example.org',
+                                                     'Hi there!', None)
+        self.assertEqual(['-s', 'Hi there!', 'jrandom at example.org'],
+                         commandline)
+
 
 class TestThunderbird(tests.TestCase):
 

=== modified file 'bzrlib/tests/test_versionedfile.py'
--- a/bzrlib/tests/test_versionedfile.py	2007-09-12 23:30:46 +0000
+++ b/bzrlib/tests/test_versionedfile.py	2007-09-20 22:58:47 +0000
@@ -207,6 +207,51 @@
             self.assertRaises(errors.RevisionNotPresent, vf.get_lines,
                 version + "2")
 
+    def test_add_lines_nostoresha(self):
+        """When nostore_sha is supplied using old content raises."""
+        vf = self.get_file()
+        empty_text = ('a', [])
+        sample_text_nl = ('b', ["foo\n", "bar\n"])
+        sample_text_no_nl = ('c', ["foo\n", "bar"])
+        shas = []
+        for version, lines in (empty_text, sample_text_nl, sample_text_no_nl):
+            sha, _, _ = vf.add_lines(version, [], lines)
+            shas.append(sha)
+        # we now have a copy of all the lines in the vf.
+        for sha, (version, lines) in zip(
+            shas, (empty_text, sample_text_nl, sample_text_no_nl)):
+            self.assertRaises(errors.ExistingContent,
+                vf.add_lines, version + "2", [], lines,
+                nostore_sha=sha)
+            # and no new version should have been added.
+            self.assertRaises(errors.RevisionNotPresent, vf.get_lines,
+                version + "2")
+
+    def test_add_lines_nostoresha(self):
+        """When nostore_sha is supplied using old content raises."""
+        vf = self.get_file()
+        empty_text = ('a', [])
+        sample_text_nl = ('b', ["foo\n", "bar\n"])
+        sample_text_no_nl = ('c', ["foo\n", "bar"])
+        shas = []
+        for version, lines in (empty_text, sample_text_nl, sample_text_no_nl):
+            sha, _, _ = vf.add_lines(version, [], lines)
+            shas.append(sha)
+        # we now have a copy of all the lines in the vf.
+        # is the test applicable to this vf implementation?
+        try:
+            vf.add_lines_with_ghosts('d', [], [])
+        except NotImplementedError:
+            raise TestSkipped("add_lines_with_ghosts is optional")
+        for sha, (version, lines) in zip(
+            shas, (empty_text, sample_text_nl, sample_text_no_nl)):
+            self.assertRaises(errors.ExistingContent,
+                vf.add_lines_with_ghosts, version + "2", [], lines,
+                nostore_sha=sha)
+            # and no new version should have been added.
+            self.assertRaises(errors.RevisionNotPresent, vf.get_lines,
+                version + "2")
+
     def test_add_lines_return_value(self):
         # add_lines should return the sha1 and the text size.
         vf = self.get_file()

=== modified file 'bzrlib/tests/test_workingtree_4.py'
--- a/bzrlib/tests/test_workingtree_4.py	2007-04-26 22:56:01 +0000
+++ b/bzrlib/tests/test_workingtree_4.py	2007-09-17 05:33:56 +0000
@@ -419,12 +419,12 @@
         tree.add(['b'], ['b-id'])
 
         try:
-            tree.rename_one('a', u'b\xb5rry')
-            new_path = u'b\xb5rry'
+            new_path = u'b\u03bcrry'
+            tree.rename_one('a', new_path)
         except UnicodeEncodeError:
             # support running the test on non-unicode platforms
-            tree.rename_one('a', 'c')
             new_path = 'c'
+            tree.rename_one('a', new_path)
         self.assertEqual(new_path, tree.id2path('a-id'))
         tree.commit(u'b\xb5rry')
         tree.unversion(['a-id'])

=== modified file 'bzrlib/tests/workingtree_implementations/test_rename_one.py'
--- a/bzrlib/tests/workingtree_implementations/test_rename_one.py	2007-02-26 16:19:02 +0000
+++ b/bzrlib/tests/workingtree_implementations/test_rename_one.py	2007-09-17 05:33:56 +0000
@@ -308,3 +308,10 @@
                                ('c', 'c-id')], tree)
         self.assertTreeLayout([('', root_id), ('a', 'a-id'), ('c', 'c-id'),
                                ('a/b', 'b-id')], tree.basis_tree())
+
+    def test_rename_to_denormalised_fails(self):
+        tree = self.make_branch_and_tree('.')
+        self.build_tree(['a'])
+        tree.add(['a'])
+        self.assertRaises((errors.InvalidNormalization, UnicodeEncodeError),
+            tree.rename_one, 'a', u'b\xb5rry')

=== modified file 'bzrlib/tree.py'
--- a/bzrlib/tree.py	2007-09-09 23:01:47 +0000
+++ b/bzrlib/tree.py	2007-09-20 22:58:47 +0000
@@ -122,7 +122,7 @@
     
     def has_filename(self, filename):
         """True if the tree has given filename."""
-        raise NotImplementedError()
+        raise NotImplementedError(self.has_filename)
 
     def has_id(self, file_id):
         file_id = osutils.safe_file_id(file_id)
@@ -242,7 +242,7 @@
         raise NotImplementedError(self.get_file_mtime)
 
     def get_file_by_path(self, path):
-        return self.get_file(self._inventory.path2id(path))
+        return self.get_file(self._inventory.path2id(path), path)
 
     def iter_files_bytes(self, desired_files):
         """Iterate through file contents.
@@ -281,7 +281,7 @@
         raise NotImplementedError(self.get_symlink_target)
 
     def annotate_iter(self, file_id):
-        """Return an iterator of revision_id, line tuples
+        """Return an iterator of revision_id, line tuples.
 
         For working trees (and mutable trees in general), the special
         revision_id 'current:' will be used for lines that are new in this
@@ -291,7 +291,7 @@
         raise NotImplementedError(self.annotate_iter)
 
     def plan_file_merge(self, file_id, other):
-        """Generate a merge plan based on annotations
+        """Generate a merge plan based on annotations.
 
         If the file contains uncommitted changes in this tree, they will be
         attributed to the 'current:' pseudo-revision.  If the file contains
@@ -337,10 +337,10 @@
     def paths2ids(self, paths, trees=[], require_versioned=True):
         """Return all the ids that can be reached by walking from paths.
         
-        Each path is looked up in each this tree and any extras provided in
+        Each path is looked up in this tree and any extras provided in
         trees, and this is repeated recursively: the children in an extra tree
         of a directory that has been renamed under a provided path in this tree
-        are all returned, even if none exist until a provided path in this
+        are all returned, even if none exist under a provided path in this
         tree, and vice versa.
 
         :param paths: An iterable of paths to start converting to ids from.
@@ -419,7 +419,7 @@
            versioned_kind.
          - lstat is the stat data *if* the file was statted.
          - path_from_tree_root is the path from the root of the tree.
-         - file_id is the file_id is the entry is versioned.
+         - file_id is the file_id if the entry is versioned.
          - versioned_kind is the kind of the file as last recorded in the 
            versioning system. If 'unknown' the file is not versioned.
         One of 'kind' and 'versioned_kind' must not be 'unknown'.
@@ -559,7 +559,7 @@
     :param trees: The trees to find file_ids within
     :param require_versioned: if true, all specified filenames must occur in
         at least one tree.
-    :return: a set of (path, file ids) for the specified filenames
+    :return: a set of file ids for the specified filenames
     """
     not_versioned = []
     interesting_ids = set()
@@ -578,7 +578,7 @@
 
 
 def _find_children_across_trees(specified_ids, trees):
-    """Return a set including specified ids and their children
+    """Return a set including specified ids and their children.
     
     All matches in all trees will be used.
 
@@ -610,7 +610,7 @@
     Its instances have methods like 'compare' and contain references to the
     source and target trees these operations are to be carried out on.
 
-    clients of bzrlib should not need to use InterTree directly, rather they
+    Clients of bzrlib should not need to use InterTree directly, rather they
     should use the convenience methods on Tree such as 'Tree.compare()' which
     will pass through to InterTree as appropriate.
     """

=== modified file 'bzrlib/workingtree_4.py'
--- a/bzrlib/workingtree_4.py	2007-09-09 23:01:47 +0000
+++ b/bzrlib/workingtree_4.py	2007-09-20 22:58:47 +0000
@@ -132,7 +132,6 @@
         """
         self._format = _format
         self.bzrdir = _bzrdir
-        from bzrlib.trace import note, mutter
         assert isinstance(basedir, basestring), \
             "base directory %r is not a string" % basedir
         basedir = safe_unicode(basedir)

=== modified file 'doc/en/user-guide/configuration.txt'
--- a/doc/en/user-guide/configuration.txt	2007-08-21 02:06:43 +0000
+++ b/doc/en/user-guide/configuration.txt	2007-09-04 19:03:51 +0000
@@ -207,18 +207,22 @@
 will try ``xdg-email``. If either of these fails, it will fall back to
 ``editor``.
 
-Supported values are:
+Supported values for specific clients:
 
-:xdg-email: Use xdg-email to run your preferred mail program
-:mapi: Use your preferred e-mail client on Windows.
+:evolution: Use Evolution.
+:kmail: Use KMail.
+:mutt: Use Mutt.
 :thunderbird: Use Mozilla Thunderbird or Icedove.  For Thunderbird/Icedove 1.5,
     this works around some bugs that xdg-email doesn't handle.
-:evolution: Use Evolution.
-:kmail: Use KMail.
+
+Supported generic values are:
+
+:default: See above.
 :editor: Use your editor to compose the merge request.  This also uses
     your commit id, (see ``bzr whoami``), smtp_server and (optionally)
     smtp_username and smtp_password.
-:default: See above.
+:mapi: Use your preferred e-mail client on Windows.
+:xdg-email: Use xdg-email to run your preferred mail program
 
 submit_branch
 -------------



More information about the bazaar-commits mailing list