Rev 3339: merge bzr.dev in file:///v/home/vila/src/bzr/experimental/faster-selftest/

Vincent Ladeuil v.ladeuil+lp at free.fr
Mon Apr 28 08:59:35 BST 2008


At file:///v/home/vila/src/bzr/experimental/faster-selftest/

------------------------------------------------------------
revno: 3339
revision-id: v.ladeuil+lp at free.fr-20080428075923-01y4bwj484glvqk7
parent: v.ladeuil+lp at free.fr-20080423135033-nhnu9u2re6m1c2xw
parent: pqm at pqm.ubuntu.com-20080428055446-p0m8jwv1jzegn933
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: cleanup-test-suite-loading
timestamp: Mon 2008-04-28 09:59:23 +0200
message:
  merge bzr.dev
modified:
  Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
  NEWS                           NEWS-20050323055033-4e00b5db738777ff
  bzr                            bzr.py-20050313053754-5485f144c7006fa6
  bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
  bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
  bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
  bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
  bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
  bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
  bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
  bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
  bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
  bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
  bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
  bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
  bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
  bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
  bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
  bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
  bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
  bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
  bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
  bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
  bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
  bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
  bzrlib/tests/test_store.py     teststore.py-20050826022702-f6caadb647395769
  bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
  doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
  doc/en/user-guide/controlling_registration.txt controlling_registra-20071121073725-0corxykv5irjal00-3
  doc/en/user-guide/sending_changes.txt sending_changes.txt-20071123154453-dk2mjhrg1vpjm5w2-4
    ------------------------------------------------------------
    revno: 3302.3.83
    revision-id: pqm at pqm.ubuntu.com-20080428055446-p0m8jwv1jzegn933
    parent: pqm at pqm.ubuntu.com-20080428032913-4fgik9du2kpxl8sf
    parent: mbp at sourcefrog.net-20080428035209-2sfjlaeijx20wt1z
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Mon 2008-04-28 06:54:46 +0100
    message:
      Merge back 1.4 to trunk
    modified:
      Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzr                            bzr.py-20050313053754-5485f144c7006fa6
      bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
      bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
      bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
      bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
      bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
      bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
      bzrlib/tests/test_store.py     teststore.py-20050826022702-f6caadb647395769
      doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
        ------------------------------------------------------------
        revno: 3302.68.1
        revision-id: mbp at sourcefrog.net-20080428035209-2sfjlaeijx20wt1z
        parent: pqm at pqm.ubuntu.com-20080428012318-g5zq9wl2flua3r2s
        parent: pqm at pqm.ubuntu.com-20080421101817-kaujt28rg33ijuoy
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: integration
        timestamp: Mon 2008-04-28 13:52:09 +1000
        message:
          Merge back 1.4 and start 1.5 (but not transaction cache reinstatement)
        modified:
          Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzr                            bzr.py-20050313053754-5485f144c7006fa6
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
          bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/tests/test_store.py     teststore.py-20050826022702-f6caadb647395769
          doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
        ------------------------------------------------------------
        revno: 3302.67.3
        revision-id: pqm at pqm.ubuntu.com-20080421101817-kaujt28rg33ijuoy
        parent: pqm at pqm.ubuntu.com-20080421081730-ai7jv6hodn9n0x5a
        parent: mbp at sourcefrog.net-20080421071233-np3nklkrpam4s194
        committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
        branch nick: 1.4
        timestamp: Mon 2008-04-21 11:18:17 +0100
        message:
          (mbp) prepare 1.4rc2 release
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
          bzrlib/store/versioned/__init__.py weavestore.py-20050907094258-88262e0434babab9
          bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/tests/test_store.py     teststore.py-20050826022702-f6caadb647395769
            ------------------------------------------------------------
            revno: 3302.65.11
            revision-id: mbp at sourcefrog.net-20080421071233-np3nklkrpam4s194
            parent: mbp at sourcefrog.net-20080421065028-8syrrbt80tj6mv4g
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: prepare-1.4
            timestamp: Mon 2008-04-21 17:12:33 +1000
            message:
              Prepare 1.4rc2 release
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
            ------------------------------------------------------------
            revno: 3302.65.10
            revision-id: mbp at sourcefrog.net-20080421065028-8syrrbt80tj6mv4g
            parent: mbp at sourcefrog.net-20080421064245-kim0jeqcurcfpsql
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: prepare-1.4
            timestamp: Mon 2008-04-21 16:50:28 +1000
            message:
              merge fix for knit-knit performance regression
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
            ------------------------------------------------------------
            revno: 3302.65.9
            revision-id: mbp at sourcefrog.net-20080421064245-kim0jeqcurcfpsql
            parent: mbp at sourcefrog.net-20080421055156-p5d83v51cecxy8d0
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: prepare-1.4
            timestamp: Mon 2008-04-21 16:42:45 +1000
            message:
              merge #205156
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
              bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
              bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
            ------------------------------------------------------------
            revno: 3302.65.8
            revision-id: mbp at sourcefrog.net-20080421055156-p5d83v51cecxy8d0
            parent: mbp at sourcefrog.net-20080421055022-21h45gfgf004x4e4
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: prepare-1.4
            timestamp: Mon 2008-04-21 15:51:56 +1000
            message:
              Change assertion to a plain raise
            modified:
              bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
            ------------------------------------------------------------
            revno: 3302.65.7
            revision-id: mbp at sourcefrog.net-20080421055022-21h45gfgf004x4e4
            parent: mbp at sourcefrog.net-20080421054330-opwod8ybwkheuk95
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: prepare-1.4
            timestamp: Mon 2008-04-21 15:50:22 +1000
            message:
              Merge fix for #211661, problem with log over hpss
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
              bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
            ------------------------------------------------------------
            revno: 3302.65.6
            revision-id: mbp at sourcefrog.net-20080421054330-opwod8ybwkheuk95
            parent: mbp at sourcefrog.net-20080421041949-3k7igivnwujpwcnb
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: prepare-1.4
            timestamp: Mon 2008-04-21 15:43:30 +1000
            message:
              re-enable transaction cache to speed knit access (cherrypick robertc)
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
              bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
              bzrlib/store/versioned/__init__.py weavestore.py-20050907094258-88262e0434babab9
              bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
              bzrlib/tests/test_store.py     teststore.py-20050826022702-f6caadb647395769
        ------------------------------------------------------------
        revno: 3302.67.2
        revision-id: pqm at pqm.ubuntu.com-20080421081730-ai7jv6hodn9n0x5a
        parent: pqm at pqm.ubuntu.com-20080421061446-ayybzxf4py1jux1p
        parent: mbp at sourcefrog.net-20080421041949-3k7igivnwujpwcnb
        committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
        branch nick: 1.4
        timestamp: Mon 2008-04-21 09:17:30 +0100
        message:
          (jam) #209948 skip ghosts when logging specified file
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
          bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
            ------------------------------------------------------------
            revno: 3302.65.5
            revision-id: mbp at sourcefrog.net-20080421041949-3k7igivnwujpwcnb
            parent: mbp at sourcefrog.net-20080411071858-9psl5lr3ko4b9bzw
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: prepare-1.4
            timestamp: Mon 2008-04-21 14:19:49 +1000
            message:
              (merge) #209948 skip ghosts when logging specified file
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/log.py                  log.py-20050505065812-c40ce11702fe5fb1
              bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
        ------------------------------------------------------------
        revno: 3302.67.1
        revision-id: pqm at pqm.ubuntu.com-20080421061446-ayybzxf4py1jux1p
        parent: pqm at pqm.ubuntu.com-20080411023221-tiv070pmkmf5q726
        parent: mbp at sourcefrog.net-20080411071858-9psl5lr3ko4b9bzw
        committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
        branch nick: 1.4
        timestamp: Mon 2008-04-21 07:14:46 +0100
        message:
          Prepare 1.4rc1
        modified:
          Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
          bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
          bzrlib/tests/branch_implementations/test_hooks.py test_hooks.py-20070129154855-blhpwxmvjs07waei-1
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
          bzrlib/transport/ssh.py        ssh.py-20060824042150-0s9787kng6zv1nwq-1
          doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
        ------------------------------------------------------------
        revno: 3302.65.4
        revision-id: mbp at sourcefrog.net-20080411071858-9psl5lr3ko4b9bzw
        parent: mbp at sourcefrog.net-20080411071846-3rhfzykpyhhln6sl
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: prepare-1.4
        timestamp: Fri 2008-04-11 17:18:58 +1000
        message:
          Prepare 1.4rc1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/__init__.py             __init__.py-20050309040759-33e65acf91bbcd5d
        ------------------------------------------------------------
        revno: 3302.65.3
        revision-id: mbp at sourcefrog.net-20080411071846-3rhfzykpyhhln6sl
        parent: mbp at sourcefrog.net-20080411055054-x96oolbsl3w0nkb8
        parent: mbp at sourcefrog.net-20080410070231-movepf7e1890j2qn
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: prepare-1.4
        timestamp: Fri 2008-04-11 17:18:46 +1000
        message:
          merge 'make dist' and 'version --short'
        modified:
          Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
          doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
            ------------------------------------------------------------
            revno: 3302.66.9
            revision-id: mbp at sourcefrog.net-20080410070231-movepf7e1890j2qn
            parent: mbp at sourcefrog.net-20080410023452-co1e7shj3k0chie5
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: make-dist
            timestamp: Thu 2008-04-10 17:02:31 +1000
            message:
              Correct short version test
            modified:
              bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
            ------------------------------------------------------------
            revno: 3302.66.8
            revision-id: mbp at sourcefrog.net-20080410023452-co1e7shj3k0chie5
            parent: mbp at sourcefrog.net-20080409043557-5btcpm5wdht0ejdi
            parent: pqm at pqm.ubuntu.com-20080409233555-n26cmi0y1hb98tf6
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: make-dist
            timestamp: Thu 2008-04-10 12:34:52 +1000
            message:
              Reconcile NEWS
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/annotate.py             annotate.py-20050922133147-7c60541d2614f022
              bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
              bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
              bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
              bzrlib/inventory.py            inventory.py-20050309040759-6648b84ca2005b37
              bzrlib/knit.py                 knit.py-20051212171256-f056ac8f0fbe1bd9
              bzrlib/multiparent.py          __init__.py-20070410133617-n1jdhcc1n1mibarp-1
              bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
              bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
              bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
              bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
              bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
              bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
              bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
              bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
              bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
              bzrlib/store/versioned/__init__.py weavestore.py-20050907094258-88262e0434babab9
              bzrlib/tests/blackbox/test_status.py teststatus.py-20050712014354-508855eb9f29f7dc
              bzrlib/tests/interversionedfile_implementations/__init__.py __init__.py-20060302012326-981af525594d02ed
              bzrlib/tests/repository_implementations/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
              bzrlib/tests/revisionstore_implementations/test_all.py test_all.py-20060303020702-9b2d4c1d75407f31
              bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
              bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
              bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
              bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
              bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
              bzrlib/tests/test_store.py     teststore.py-20050826022702-f6caadb647395769
              bzrlib/tests/test_subsume.py   test_subsume.py-20060927040024-tsvh4pchajoayymg-1
              bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
              bzrlib/tests/test_weave.py     testknit.py-20050627023648-9833cc5562ffb785
              bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
              bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
              bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
              bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
              doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
            ------------------------------------------------------------
            revno: 3302.66.7
            revision-id: mbp at sourcefrog.net-20080409043557-5btcpm5wdht0ejdi
            parent: mbp at sourcefrog.net-20080409035342-wm21vsrt7tz26g0t
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: make-dist
            timestamp: Wed 2008-04-09 14:35:57 +1000
            message:
              Commands should use self.outf not print
            modified:
              bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
            ------------------------------------------------------------
            revno: 3302.66.6
            revision-id: mbp at sourcefrog.net-20080409035342-wm21vsrt7tz26g0t
            parent: mbp at sourcefrog.net-20080409034848-sm47wz1fg12h57db
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: make-dist
            timestamp: Wed 2008-04-09 13:53:42 +1000
            message:
              NEWS updates
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
            ------------------------------------------------------------
            revno: 3302.66.5
            revision-id: mbp at sourcefrog.net-20080409034848-sm47wz1fg12h57db
            parent: mbp at sourcefrog.net-20080409032923-uh6hxeubehsb9zm0
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: make-dist
            timestamp: Wed 2008-04-09 13:48:48 +1000
            message:
              Add check-dist-tarball to run tests from the packaged source
            modified:
              Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
            ------------------------------------------------------------
            revno: 3302.66.4
            revision-id: mbp at sourcefrog.net-20080409032923-uh6hxeubehsb9zm0
            parent: mbp at sourcefrog.net-20080409032500-mjo6ewg4q9onsrqm
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: make-dist
            timestamp: Wed 2008-04-09 13:29:23 +1000
            message:
              Update developer documentation for new makefile dist targets
            modified:
              doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
            ------------------------------------------------------------
            revno: 3302.66.3
            revision-id: mbp at sourcefrog.net-20080409032500-mjo6ewg4q9onsrqm
            parent: mbp at sourcefrog.net-20080409031523-gms00duf018304og
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: make-dist
            timestamp: Wed 2008-04-09 13:25:00 +1000
            message:
              Add dist-upload-escudero target
            modified:
              Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
            ------------------------------------------------------------
            revno: 3302.66.2
            revision-id: mbp at sourcefrog.net-20080409031523-gms00duf018304og
            parent: mbp at sourcefrog.net-20080409030130-zu2daqbndi8a4uu0
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: make-dist
            timestamp: Wed 2008-04-09 13:15:23 +1000
            message:
              Add a simple 'make dist' rule
            modified:
              Makefile                       Makefile-20050805140406-d96e3498bb61c5bb
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
            ------------------------------------------------------------
            revno: 3302.66.1
            revision-id: mbp at sourcefrog.net-20080409030130-zu2daqbndi8a4uu0
            parent: pqm at pqm.ubuntu.com-20080408192311-eoozb2m0s383xt35
            committer: Martin Pool <mbp at sourcefrog.net>
            branch nick: make-dist
            timestamp: Wed 2008-04-09 13:01:30 +1000
            message:
              Add version --short option
            modified:
              NEWS                           NEWS-20050323055033-4e00b5db738777ff
              bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
              bzrlib/tests/blackbox/test_version.py test_version.py-20070312060045-ol7th9z035r3im3d-1
        ------------------------------------------------------------
        revno: 3302.65.2
        revision-id: mbp at sourcefrog.net-20080411055054-x96oolbsl3w0nkb8
        parent: mbp at sourcefrog.net-20080411054511-7nw14wjctukkfqou
        parent: andrew.bennetts at canonical.com-20080411045144-nu3ofu2nrfyszvma
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: prepare-1.4
        timestamp: Fri 2008-04-11 15:50:54 +1000
        message:
          Add a hook for Branch.set_last_revision_info.
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
          bzrlib/tests/branch_implementations/test_hooks.py test_hooks.py-20070129154855-blhpwxmvjs07waei-1
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
        ------------------------------------------------------------
        revno: 3302.65.1
        revision-id: mbp at sourcefrog.net-20080411054511-7nw14wjctukkfqou
        parent: pqm at pqm.ubuntu.com-20080411023221-tiv070pmkmf5q726
        parent: andrew.bennetts at canonical.com-20080410091639-6hwphp6m3c0rg44t
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: prepare-1.4
        timestamp: Fri 2008-04-11 15:45:11 +1000
        message:
          merge fix for Paramiko versions newer than 1.7.2 #213425
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
          bzrlib/transport/ssh.py        ssh.py-20060824042150-0s9787kng6zv1nwq-1
    ------------------------------------------------------------
    revno: 3302.3.82
    revision-id: pqm at pqm.ubuntu.com-20080428032913-4fgik9du2kpxl8sf
    parent: pqm at pqm.ubuntu.com-20080428012318-g5zq9wl2flua3r2s
    parent: aaron at aaronbentley.com-20080428012745-n6x7a8cymzkswbtv
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Mon 2008-04-28 04:29:13 +0100
    message:
      (abentley,
      	robertc) Avoid pack name collisions when fetching all revisions
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
      bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
        ------------------------------------------------------------
        revno: 1551.19.38
        revision-id: aaron at aaronbentley.com-20080428012745-n6x7a8cymzkswbtv
        parent: aaron at aaronbentley.com-20080425221600-j1nkw6v8corwgw19
        parent: pqm at pqm.ubuntu.com-20080428012318-g5zq9wl2flua3r2s
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: Aaron's mergeable stuff
        timestamp: Sun 2008-04-27 21:27:45 -0400
        message:
          Merge with bzr.dev
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
          bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
        ------------------------------------------------------------
        revno: 1551.19.37
        revision-id: aaron at aaronbentley.com-20080425221600-j1nkw6v8corwgw19
        parent: aaron at aaronbentley.com-20080425221234-ov2ahpio6y54mnlq
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: Aaron's mergeable stuff
        timestamp: Fri 2008-04-25 18:16:00 -0400
        message:
          Remove workarounds for bug 212908
        modified:
          bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
        ------------------------------------------------------------
        revno: 1551.19.36
        revision-id: aaron at aaronbentley.com-20080425221234-ov2ahpio6y54mnlq
        parent: aaron at aaronbentley.com-20080424214953-5ddh20nq0eipfxh1
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: Aaron's mergeable stuff
        timestamp: Fri 2008-04-25 18:12:34 -0400
        message:
          Prevent fetch all from causing pack collisions
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
    ------------------------------------------------------------
    revno: 3302.3.81
    revision-id: pqm at pqm.ubuntu.com-20080428012318-g5zq9wl2flua3r2s
    parent: pqm at pqm.ubuntu.com-20080427070204-4t5flfqnnmr6bmiw
    parent: ian.clatworthy at canonical.com-20080427223834-hcxv61ovf603klrt
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Mon 2008-04-28 02:23:18 +0100
    message:
      commit now works with Microsoft FTP (Andreas Deininger)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
        ------------------------------------------------------------
        revno: 3302.64.1
        revision-id: ian.clatworthy at canonical.com-20080427223834-hcxv61ovf603klrt
        parent: pqm at pqm.ubuntu.com-20080427070204-4t5flfqnnmr6bmiw
        committer: Ian Clatworthy <ian.clatworthy at canonical.com>
        branch nick: ianc-integration
        timestamp: Mon 2008-04-28 08:38:34 +1000
        message:
          commit now works with Microsoft FTP (Andreas Deininger)
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/transport/ftp.py        ftp.py-20051116161804-58dc9506548c2a53
    ------------------------------------------------------------
    revno: 3302.3.80
    revision-id: pqm at pqm.ubuntu.com-20080427070204-4t5flfqnnmr6bmiw
    parent: pqm at pqm.ubuntu.com-20080425215735-sa37dllaxjo2o7do
    parent: aaron at aaronbentley.com-20080426164057-s3kl8d43lvf40x9p
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Sun 2008-04-27 08:02:04 +0100
    message:
      Remove locking from generators
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
      bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
      bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
      bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
      bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
      bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
      bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
        ------------------------------------------------------------
        revno: 3302.63.4
        revision-id: aaron at aaronbentley.com-20080426164057-s3kl8d43lvf40x9p
        parent: aaron at aaronbentley.com-20080426163447-zaj22oysskneh5og
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: fetch-locking
        timestamp: Sat 2008-04-26 12:40:57 -0400
        message:
          Add NEWS entry
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 3302.63.3
        revision-id: aaron at aaronbentley.com-20080426163447-zaj22oysskneh5og
        parent: aaron at aaronbentley.com-20080426060728-dso3gzg3nuilqqto
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: fetch-locking
        timestamp: Sat 2008-04-26 12:34:47 -0400
        message:
          Stop locking in get_data_stream_for_search
        modified:
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/smart/repository.py     repository.py-20061128022038-vr5wy5bubyb8xttk-1
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
        ------------------------------------------------------------
        revno: 3302.63.2
        revision-id: aaron at aaronbentley.com-20080426060728-dso3gzg3nuilqqto
        parent: aaron at aaronbentley.com-20080425231410-nk29f2kt9ah2a1vq
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: fetch-locking
        timestamp: Sat 2008-04-26 02:07:28 -0400
        message:
          Cleanup
        modified:
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
        ------------------------------------------------------------
        revno: 3302.63.1
        revision-id: aaron at aaronbentley.com-20080425231410-nk29f2kt9ah2a1vq
        parent: pqm at pqm.ubuntu.com-20080425215735-sa37dllaxjo2o7do
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: fetch-locking
        timestamp: Fri 2008-04-25 19:14:10 -0400
        message:
          Fix lock-taking iterators
        modified:
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
    ------------------------------------------------------------
    revno: 3302.3.79
    revision-id: pqm at pqm.ubuntu.com-20080425215735-sa37dllaxjo2o7do
    parent: pqm at pqm.ubuntu.com-20080424185721-ukk0dncnc4xpqk5o
    parent: aaron at aaronbentley.com-20080424214953-5ddh20nq0eipfxh1
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Fri 2008-04-25 22:57:35 +0100
    message:
      Speed up diff by using more efficient API for selecting revisions
      	(abentley)
    modified:
      NEWS                           NEWS-20050323055033-4e00b5db738777ff
      bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
      bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
        ------------------------------------------------------------
        revno: 1551.19.35
        revision-id: aaron at aaronbentley.com-20080424214953-5ddh20nq0eipfxh1
        parent: aaron at aaronbentley.com-20080424213149-ekqo3hiukqnoif58
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: Aaron's mergeable stuff
        timestamp: Thu 2008-04-24 17:49:53 -0400
        message:
          Update NEWS
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
        ------------------------------------------------------------
        revno: 1551.19.34
        revision-id: aaron at aaronbentley.com-20080424213149-ekqo3hiukqnoif58
        parent: aaron at aaronbentley.com-20080424201025-ows0yk4ecf8o5zcf
        parent: pqm at pqm.ubuntu.com-20080424185721-ukk0dncnc4xpqk5o
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: Aaron's mergeable stuff
        timestamp: Thu 2008-04-24 17:31:49 -0400
        message:
          Merge with bzr.dev
        removed:
          bzrlib/xml6.py                 xml6.py-20060823042456-dbaaq4atrche7xy5-1
        added:
          bzrlib/tests/test_mutabletree.py test_mutabletree.py-20080405014429-2v0cdi3re320p8db-1
          bzrlib/xml5.py                 xml5.py-20080328030717-t9guwinq8hom0ar3-1
          bzrlib/xml6.py                 xml6.py-20080327235607-1skmbg4o9cd1o636-1
          doc/developers/integration.txt integration.txt-20080404022341-2lorxocp1in07zij-1
          doc/developers/plugin-api.txt  pluginapi.txt-20080229110225-q2j5y4agqhlkjn0s-1
          doc/developers/tortoise-strategy.txt tortoisestrategy.txt-20080403024510-2ahdqrvnwqrb5p5t-1
        renamed:
          bzrlib/xml5.py => bzrlib/xml8.py xml5.py-20050907032657-aac8f960815b66b1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/annotate.py             annotate.py-20050922133147-7c60541d2614f022
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
          bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
          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/mail_client.py          mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
          bzrlib/msgeditor.py            msgeditor.py-20050901111708-ef6d8de98f5d8f2f
          bzrlib/multiparent.py          __init__.py-20070410133617-n1jdhcc1n1mibarp-1
          bzrlib/mutabletree.py          mutabletree.py-20060906023413-4wlkalbdpsxi2r4y-2
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/plugin.py               plugin.py-20050622060424-829b654519533d69
          bzrlib/plugins/launchpad/lp_directory.py lp_indirect.py-20070126012204-de5rugwlt22c7u7e-1
          bzrlib/progress.py             progress.py-20050610070202-df9faaab791964c0
          bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
          bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
          bzrlib/smart/branch.py         branch.py-20061124031907-mzh3pla28r83r97f-1
          bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
          bzrlib/smart/medium.py         medium.py-20061103051856-rgu2huy59fkz902q-1
          bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
          bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
          bzrlib/smart/server.py         server.py-20061110062051-chzu10y32vx8gvur-1
          bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
          bzrlib/store/versioned/__init__.py weavestore.py-20050907094258-88262e0434babab9
          bzrlib/tests/TestUtil.py       TestUtil.py-20050824080200-5f70140a2d938694
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_reconfigure.py test_reconfigure.py-20070908173426-khfo5fi2rgzgtwj3-1
          bzrlib/tests/blackbox/test_status.py teststatus.py-20050712014354-508855eb9f29f7dc
          bzrlib/tests/blackbox/test_switch.py test_switch.py-20071122111948-0c5en6uz92bwl76h-1
          bzrlib/tests/branch_implementations/test_hooks.py test_hooks.py-20070129154855-blhpwxmvjs07waei-1
          bzrlib/tests/bzrdir_implementations/__init__.py __init__.py-20060131065642-34c39b54f42dd048
          bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
          bzrlib/tests/intertree_implementations/__init__.py __init__.py-20060724101752-09ysswo1a92uqyoz-3
          bzrlib/tests/interversionedfile_implementations/__init__.py __init__.py-20060302012326-981af525594d02ed
          bzrlib/tests/repository_implementations/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
          bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/revisionstore_implementations/test_all.py test_all.py-20060303020702-9b2d4c1d75407f31
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
          bzrlib/tests/test_errors.py    test_errors.py-20060210110251-41aba2deddf936a8
          bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
          bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
          bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
          bzrlib/tests/test_plugins.py   plugins.py-20050622075746-32002b55e5e943e9
          bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
          bzrlib/tests/test_store.py     teststore.py-20050826022702-f6caadb647395769
          bzrlib/tests/test_subsume.py   test_subsume.py-20060927040024-tsvh4pchajoayymg-1
          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/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
          bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
          bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
          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/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
          bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
          doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
          doc/developers/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
          doc/en/user-guide/controlling_registration.txt controlling_registra-20071121073725-0corxykv5irjal00-3
          doc/en/user-guide/core_concepts.txt core_concepts.txt-20071114035000-q36a9h57ps06uvnl-2
          doc/en/user-guide/sending_changes.txt sending_changes.txt-20071123154453-dk2mjhrg1vpjm5w2-4
          bzrlib/xml8.py                 xml5.py-20050907032657-aac8f960815b66b1
        ------------------------------------------------------------
        revno: 1551.19.33
        revision-id: aaron at aaronbentley.com-20080424201025-ows0yk4ecf8o5zcf
        parent: aaron at aaronbentley.com-20080404042019-zwpkw158y1411rw7
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: Aaron's mergeable stuff
        timestamp: Thu 2008-04-24 16:10:25 -0400
        message:
          Use as_revision_id for diff
        modified:
          bzrlib/diff.py                 diff.py-20050309040759-26944fbbf2ebbf36
          bzrlib/revisionspec.py         revisionspec.py-20050907152633-17567659fd5c0ddb
    ------------------------------------------------------------
    revno: 3302.3.78
    revision-id: pqm at pqm.ubuntu.com-20080424185721-ukk0dncnc4xpqk5o
    parent: pqm at pqm.ubuntu.com-20080424072816-jjx4v6pqude11ys2
    parent: aaron at aaronbentley.com-20080424164423-i2wobvoi7xmzxnvc
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Thu 2008-04-24 19:57:21 +0100
    message:
      Prevent losing data when reconfiguring to lightweight checkout
      	(abentley)
    modified:
      bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
      bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
      bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
      bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
        ------------------------------------------------------------
        revno: 3302.62.5
        revision-id: aaron at aaronbentley.com-20080424164423-i2wobvoi7xmzxnvc
        parent: aaron at aaronbentley.com-20080424053319-9a13fu46i2ameb5i
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: reconfigure-lightweight-check
        timestamp: Thu 2008-04-24 12:44:23 -0400
        message:
          Tweak text
        modified:
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
        ------------------------------------------------------------
        revno: 3302.62.4
        revision-id: aaron at aaronbentley.com-20080424053319-9a13fu46i2ameb5i
        parent: aaron at aaronbentley.com-20080424045842-0cajl9v6s4u52kaw
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: reconfigure-lightweight-check
        timestamp: Thu 2008-04-24 01:33:19 -0400
        message:
          Add sync-for-reconfigure help topic
        modified:
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
        ------------------------------------------------------------
        revno: 3302.62.3
        revision-id: aaron at aaronbentley.com-20080424045842-0cajl9v6s4u52kaw
        parent: aaron at aaronbentley.com-20080408055335-86c71v5wpx2p5gzv
        parent: pqm at pqm.ubuntu.com-20080422120059-sony5sthnlewabge
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: reconfigure-lightweight-check
        timestamp: Thu 2008-04-24 00:58:42 -0400
        message:
          Merge bzr.dev
        removed:
          bzrlib/xml6.py                 xml6.py-20060823042456-dbaaq4atrche7xy5-1
        added:
          bzrlib/xml5.py                 xml5.py-20080328030717-t9guwinq8hom0ar3-1
          bzrlib/xml6.py                 xml6.py-20080327235607-1skmbg4o9cd1o636-1
          doc/developers/integration.txt integration.txt-20080404022341-2lorxocp1in07zij-1
          doc/developers/plugin-api.txt  pluginapi.txt-20080229110225-q2j5y4agqhlkjn0s-1
          doc/developers/tortoise-strategy.txt tortoisestrategy.txt-20080403024510-2ahdqrvnwqrb5p5t-1
        renamed:
          bzrlib/xml5.py => bzrlib/xml8.py xml5.py-20050907032657-aac8f960815b66b1
        modified:
          NEWS                           NEWS-20050323055033-4e00b5db738777ff
          bzrlib/annotate.py             annotate.py-20050922133147-7c60541d2614f022
          bzrlib/branch.py               branch.py-20050309040759-e4baf4e0d046576e
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          bzrlib/bzrdir.py               bzrdir.py-20060131065624-156dfea39c4387cb
          bzrlib/commands.py             bzr.py-20050309040720-d10f4714595cf8c3
          bzrlib/config.py               config.py-20051011043216-070c74f4e9e338e8
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/fetch.py                fetch.py-20050818234941-26fea6105696365d
          bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
          bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
          bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
          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/mail_client.py          mail_client.py-20070809192806-vuxt3t19srtpjpdn-1
          bzrlib/msgeditor.py            msgeditor.py-20050901111708-ef6d8de98f5d8f2f
          bzrlib/multiparent.py          __init__.py-20070410133617-n1jdhcc1n1mibarp-1
          bzrlib/osutils.py              osutils.py-20050309040759-eeaff12fbf77ac86
          bzrlib/plugins/launchpad/lp_directory.py lp_indirect.py-20070126012204-de5rugwlt22c7u7e-1
          bzrlib/progress.py             progress.py-20050610070202-df9faaab791964c0
          bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
          bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
          bzrlib/repofmt/knitrepo.py     knitrepo.py-20070206081537-pyy4a00xdas0j4pf-1
          bzrlib/repofmt/pack_repo.py    pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
          bzrlib/repofmt/weaverepo.py    presplitout.py-20070125045333-wfav3tsh73oxu3zk-1
          bzrlib/repository.py           rev_storage.py-20051111201905-119e9401e46257e3
          bzrlib/revisiontree.py         revisiontree.py-20060724012533-bg8xyryhxd0o0i0h-1
          bzrlib/smart/branch.py         branch.py-20061124031907-mzh3pla28r83r97f-1
          bzrlib/smart/client.py         client.py-20061116014825-2k6ada6xgulslami-1
          bzrlib/smart/medium.py         medium.py-20061103051856-rgu2huy59fkz902q-1
          bzrlib/smart/protocol.py       protocol.py-20061108035435-ot0lstk2590yqhzr-1
          bzrlib/smart/request.py        request.py-20061108095550-gunadhxmzkdjfeek-1
          bzrlib/smart/server.py         server.py-20061110062051-chzu10y32vx8gvur-1
          bzrlib/store/revision/knit.py  knit.py-20060303020652-de5fa299e941a3c7
          bzrlib/store/versioned/__init__.py weavestore.py-20050907094258-88262e0434babab9
          bzrlib/tests/__init__.py       selftest.py-20050531073622-8d0e3c8845c97a64
          bzrlib/tests/blackbox/test_reconfigure.py test_reconfigure.py-20070908173426-khfo5fi2rgzgtwj3-1
          bzrlib/tests/blackbox/test_status.py teststatus.py-20050712014354-508855eb9f29f7dc
          bzrlib/tests/branch_implementations/test_hooks.py test_hooks.py-20070129154855-blhpwxmvjs07waei-1
          bzrlib/tests/bzrdir_implementations/__init__.py __init__.py-20060131065642-34c39b54f42dd048
          bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
          bzrlib/tests/intertree_implementations/__init__.py __init__.py-20060724101752-09ysswo1a92uqyoz-3
          bzrlib/tests/interversionedfile_implementations/__init__.py __init__.py-20060302012326-981af525594d02ed
          bzrlib/tests/repository_implementations/test_check_reconcile.py test_broken.py-20070928125406-62236394w0jpbpd6-2
          bzrlib/tests/repository_implementations/test_fetch.py test_fetch.py-20070814052151-5cxha9slx4c93uog-1
          bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
          bzrlib/tests/revisionstore_implementations/test_all.py test_all.py-20060303020702-9b2d4c1d75407f31
          bzrlib/tests/test_branch.py    test_branch.py-20060116013032-97819aa07b8ab3b5
          bzrlib/tests/test_bzrdir.py    test_bzrdir.py-20060131065654-deba40eef51cf220
          bzrlib/tests/test_config.py    testconfig.py-20051011041908-742d0c15d8d8c8eb
          bzrlib/tests/test_fetch.py     testfetch.py-20050825090644-f73e07e7dfb1765a
          bzrlib/tests/test_knit.py      test_knit.py-20051212171302-95d4c00dd5f11f2b
          bzrlib/tests/test_log.py       testlog.py-20050728115707-1a514809d7d49309
          bzrlib/tests/test_mail_client.py test_mail_client.py-20070809192806-vuxt3t19srtpjpdn-2
          bzrlib/tests/test_merge.py     testmerge.py-20050905070950-c1b5aa49ff911024
          bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
          bzrlib/tests/test_remote.py    test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
          bzrlib/tests/test_selftest.py  test_selftest.py-20051202044319-c110a115d8c0456a
          bzrlib/tests/test_smart.py     test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
          bzrlib/tests/test_smart_transport.py test_ssh_transport.py-20060608202016-c25gvf1ob7ypbus6-2
          bzrlib/tests/test_store.py     teststore.py-20050826022702-f6caadb647395769
          bzrlib/tests/test_subsume.py   test_subsume.py-20060927040024-tsvh4pchajoayymg-1
          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/__init__.py __init__.py-20060717075546-420s7b0bj9hzeowi-2
          bzrlib/tests/workingtree_implementations/__init__.py __init__.py-20060203003124-b2aa5aca21a8bfad
          bzrlib/transform.py            transform.py-20060105172343-dd99e54394d91687
          bzrlib/transport/remote.py     ssh.py-20060608202016-c25gvf1ob7ypbus6-1
          bzrlib/transport/sftp.py       sftp.py-20051019050329-ab48ce71b7e32dfe
          bzrlib/transport/ssh.py        ssh.py-20060824042150-0s9787kng6zv1nwq-1
          bzrlib/versionedfile.py        versionedfile.py-20060222045106-5039c71ee3b65490
          bzrlib/weave.py                knit.py-20050627021749-759c29984154256b
          bzrlib/workingtree_4.py        workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
          bzrlib/xml_serializer.py       xml.py-20050309040759-57d51586fdec365d
          doc/developers/HACKING.txt     HACKING-20050805200004-2a5dc975d870f78c
          doc/developers/index.txt       index.txt-20070508041241-qznziunkg0nffhiw-1
          doc/en/user-guide/controlling_registration.txt controlling_registra-20071121073725-0corxykv5irjal00-3
          bzrlib/xml8.py                 xml5.py-20050907032657-aac8f960815b66b1
        ------------------------------------------------------------
        revno: 3302.62.2
        revision-id: aaron at aaronbentley.com-20080408055335-86c71v5wpx2p5gzv
        parent: aaron at aaronbentley.com-20080406165435-cqhh3rg3gt1qzp11
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: reconfigure-lightweight-check
        timestamp: Tue 2008-04-08 01:53:35 -0400
        message:
          Split out tests even further
        modified:
          bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
        ------------------------------------------------------------
        revno: 3302.62.1
        revision-id: aaron at aaronbentley.com-20080406165435-cqhh3rg3gt1qzp11
        parent: pqm at pqm.ubuntu.com-20080406101328-z1x7a0hsejxblf39
        committer: Aaron Bentley <aaron at aaronbentley.com>
        branch nick: reconfigure-lightweight-check
        timestamp: Sun 2008-04-06 12:54:35 -0400
        message:
          Raise an error when converting a branch to a lightweight checkout loses data
        modified:
          bzrlib/errors.py               errors.py-20050309040759-20512168c4e14fbd
          bzrlib/reconfigure.py          reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
          bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
    ------------------------------------------------------------
    revno: 3302.3.77
    revision-id: pqm at pqm.ubuntu.com-20080424072816-jjx4v6pqude11ys2
    parent: pqm at pqm.ubuntu.com-20080424051908-kyhfubgxkuvu5bqc
    parent: mbp at sourcefrog.net-20080424033054-tder52xdjbq39x5t
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Thu 2008-04-24 08:28:16 +0100
    message:
      (mbp) Better help and docs for send
    modified:
      bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
      doc/en/user-guide/sending_changes.txt sending_changes.txt-20071123154453-dk2mjhrg1vpjm5w2-4
        ------------------------------------------------------------
        revno: 3302.61.2
        revision-id: mbp at sourcefrog.net-20080424033054-tder52xdjbq39x5t
        parent: mbp at sourcefrog.net-20080424012726-az7wb11knbdwzqhv
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: doc
        timestamp: Thu 2008-04-24 13:30:54 +1000
        message:
          Say 'merge directive' rather than just 'directive' in help
        modified:
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
        ------------------------------------------------------------
        revno: 3302.61.1
        revision-id: mbp at sourcefrog.net-20080424012726-az7wb11knbdwzqhv
        parent: pqm at pqm.ubuntu.com-20080422120059-sony5sthnlewabge
        committer: Martin Pool <mbp at sourcefrog.net>
        branch nick: doc
        timestamp: Thu 2008-04-24 11:27:26 +1000
        message:
          doc: send -o, and more on send in user guide
        modified:
          bzrlib/builtins.py             builtins.py-20050830033751-fc01482b9ca23183
          doc/en/user-guide/sending_changes.txt sending_changes.txt-20071123154453-dk2mjhrg1vpjm5w2-4
    ------------------------------------------------------------
    revno: 3302.3.76
    revision-id: pqm at pqm.ubuntu.com-20080424051908-kyhfubgxkuvu5bqc
    parent: pqm at pqm.ubuntu.com-20080422120059-sony5sthnlewabge
    parent: aaron at aaronbentley.com-20080424031236-erfcp6zsvkfiiruq
    committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
    branch nick: +trunk
    timestamp: Thu 2008-04-24 06:19:08 +0100
    message:
      Add documentation of ignore command (nmb)
    modified:
      doc/en/user-guide/controlling_registration.txt controlling_registra-20071121073725-0corxykv5irjal00-3
    ------------------------------------------------------------
    revno: 3302.60.1
    revision-id: aaron at aaronbentley.com-20080424031236-erfcp6zsvkfiiruq
    parent: pqm at pqm.ubuntu.com-20080422120059-sony5sthnlewabge
    parent: nmb at wartburg.edu-20080418010617-zeqt8465w8gqjivq
    committer: Aaron Bentley <aaron at aaronbentley.com>
    branch nick: bzr.ab.integration
    timestamp: Wed 2008-04-23 23:12:36 -0400
    message:
      Merge add-ignore patch
    modified:
      doc/en/user-guide/controlling_registration.txt controlling_registra-20071121073725-0corxykv5irjal00-3
    ------------------------------------------------------------
    revno: 3302.59.1
    revision-id: nmb at wartburg.edu-20080418010617-zeqt8465w8gqjivq
    parent: pqm at pqm.ubuntu.com-20080417155359-m3nxwwr442bgmsne
    committer: Neil Martinsen-Burrell <nmb at wartburg.edu>
    branch nick: add-ignore
    timestamp: Thu 2008-04-17 20:06:17 -0500
    message:
      add bzr ignore to the Users Guide
    modified:
      doc/en/user-guide/controlling_registration.txt controlling_registra-20071121073725-0corxykv5irjal00-3
-------------- next part --------------
=== modified file 'Makefile'
--- a/Makefile	2007-12-17 01:45:32 +0000
+++ b/Makefile	2008-04-28 03:52:09 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2005, 2006, 2007 Canonical Ltd
+# Copyright (C) 2005, 2006, 2007, 2008 Canonical Ltd
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -198,3 +198,48 @@
 	$(PYTHON) tools/win32/ostools.py remove bzr-setup*.exe
 	$(PYTHON) tools/win32/ostools.py remove bzr-*win32.exe
 	$(PYTHON) tools/win32/ostools.py remove dist
+
+.PHONY: dist dist-upload-escudero check-dist-tarball
+
+# build a distribution tarball.
+#
+# this method of copying the pyrex generated files is a bit ugly; it would be
+# nicer to generate it from distutils.
+#
+# these are a bit ubuntu-specific.
+dist: 
+	version=`./bzr version --short` && \
+	echo Building distribution of bzr $$version && \
+	expbasedir=`mktemp -d` && \
+	expdir=$$expbasedir/bzr-$$version && \
+	tarball=$$PWD/../bzr-$$version.tar.gz && \
+	$(MAKE) clean && \
+	$(MAKE) && \
+	bzr export $$expdir && \
+	cp bzrlib/*.c $$expdir/bzrlib/. && \
+	tar cfz $$tarball -C $$expbasedir bzr-$$version && \
+	gpg --detach-sign $$tarball && \
+	echo $$tarball done.
+
+# run all tests in a previously built tarball
+check-dist-tarball:
+	tmpdir=`mktemp -d` && \
+	version=`./bzr version --short` && \
+	tarball=$$PWD/../bzr-$$version.tar.gz && \
+	tar Cxz $$tmpdir -f $$tarball && \
+	$(MAKE) -C $$tmpdir/bzr-$$version check 
+
+
+# upload previously built tarball to the download directory on bazaar-vcs.org,
+# and verify that it can be downloaded ok.
+dist-upload-escudero:
+	version=`./bzr version --short` && \
+	tarball=../bzr-$$version.tar.gz && \
+	scp $$tarball $$tarball.sig \
+	    escudero.ubuntu.com:/srv/bazaar.canonical.com/www/releases/src \
+		&& \
+	echo verifying over http... && \
+	curl http://bazaar-vcs.org/releases/src/bzr-$$version.tar.gz \
+		| diff -s - $$tarball && \
+	curl http://bazaar-vcs.org/releases/src/bzr-$$version.tar.gz.sig \
+		| diff -s - $$tarball.sig 

=== modified file 'NEWS'
--- a/NEWS	2008-04-23 13:50:33 +0000
+++ b/NEWS	2008-04-28 07:59:23 +0000
@@ -21,11 +21,20 @@
 
   IMPROVEMENTS:
 
+    * Diff now handles revision specs like "branch:" and "submit:" more
+      efficiently.  (Aaron Bentley)
+
   BUGFIXES:
 
     * Avoid muttering every time a child update does not cause a progress bar
       update. (John Arbash Meinel, #213771)
 
+    * ``bzr commit`` now works with Microsoft's FTP service.
+      (Andreas Deininger)
+
+    * Fetching all revisions from a repository does not cause pack collisions.
+      (Robert Collins, Aaron Bentley, #212908)
+
     * Set SO_REUSEADDR on server sockets of ``bzr serve`` to avoid problems
       rebinding the socket when starting the server a second time.
       (John Arbash Meinel, Martin Pool, #164288)
@@ -52,6 +61,39 @@
 
   API BREAKS:
 
+    * Repository.get_data_stream, Repository.get_data_stream_for_search(),
+      Repository.get_deltas_for_revsions(), Repository.revision_trees(),
+      Repository.item_keys_introduced_by() no longer take read locks.
+      (Aaron Bentley)
+
+
+bzr 1.4rc2 2008-04-21
+---------------------
+
+  BUG FIXES:
+
+    * ``bzr log -r ..X bzr://`` was failing, because it was getting a request
+      for ``revision_id=None`` which was not a string.
+      (John Arbash Meinel, #211661)
+
+    * Fixed a bug in handling ghost revisions when logging changes in a 
+      particular file.  (John Arbash Meinel, #209948)
+
+    * Fix error about "attempt to add line-delta in non-delta knit".
+      (Andrew Bennetts, #205156)
+
+    * Fixed performance degradation in fetching from knit repositories to
+      knits and packs due to parsing the entire revisions.kndx on every graph
+      walk iteration fixed by using the Repository.get_graph API.  There was
+      another regression in knit => knit fetching which re-read the index for
+      every revision each side had in common.
+      (Robert Collins, John Arbash Meinel)
+
+
+bzr 1.4rc1 2008-04-11
+---------------------
+
+
 
 bzr 1.4rc1 2008-04-11
 ---------------------
@@ -135,8 +177,11 @@
       one is present.  You can use the new ``nosmart+`` transport decorator
       to get the old behaviour.  (Andrew Bennetts)
 
-     * Various operations with revision specs and commands that calculate
-       revnos and revision ids are faster.  (John A. Meinel, Aaron Bentley)
+    * The ``version`` command takes a ``--short`` option to print just the
+      version number, for easier use in scripts.  (Martin Pool)
+
+    * Various operations with revision specs and commands that calculate
+      revnos and revision ids are faster.  (John A. Meinel, Aaron Bentley)
 
   BUGFIXES:
 
@@ -313,6 +358,9 @@
       had already failed, and should not be relied upon by code. 
       (Martin Pool, #109520)
 
+    * ``make dist`` target to build a release tarball, and also 
+      ``check-dist-tarball`` and ``dist-upload-escudero``.  (Martin Pool)
+
     * The ``read_response_tuple`` method of ``SmartClientRequestProtocol*``
       classes will now raise ``UnknownSmartMethod`` when appropriate, so that
       callers don't need to try distinguish unknown request errors from other

=== modified file 'bzr'
--- a/bzr	2008-04-02 01:46:35 +0000
+++ b/bzr	2008-04-28 03:52:09 +0000
@@ -22,7 +22,7 @@
 import sys
 
 # update this on each release
-_script_version = (1, 4, 0)
+_script_version = (1, 5, 0)
 
 if __doc__ is None:
     print "bzr does not support python -OO."

=== modified file 'bzrlib/__init__.py'
--- a/bzrlib/__init__.py	2008-04-02 01:46:35 +0000
+++ b/bzrlib/__init__.py	2008-04-28 03:52:09 +0000
@@ -41,7 +41,7 @@
 # Python version 2.0 is (2, 0, 0, 'final', 0)."  Additionally we use a
 # releaselevel of 'dev' for unreleased under-development code.
 
-version_info = (1, 4, 0, 'dev', 0)
+version_info = (1, 5, 0, 'dev', 0)
 
 # API compatibility version: bzrlib is currently API compatible with 0.18.
 api_minimum_version = (0, 18, 0)

=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py	2008-04-12 06:46:35 +0000
+++ b/bzrlib/builtins.py	2008-04-28 03:52:09 +0000
@@ -2719,11 +2719,17 @@
     """Show version of bzr."""
 
     encoding_type = 'replace'
+    takes_options = [
+        Option("short", help="Print just the version number."),
+        ]
 
     @display_command
-    def run(self):
+    def run(self, short=False):
         from bzrlib.version import show_version
-        show_version(to_file=self.outf)
+        if short:
+            self.outf.write(bzrlib.version_string + '\n')
+        else:
+            show_version(to_file=self.outf)
 
 
 class cmd_rocks(Command):
@@ -4107,7 +4113,9 @@
                'rather than the one containing the working directory.',
                short_name='f',
                type=unicode),
-        Option('output', short_name='o', help='Write directive to this file.',
+        Option('output', short_name='o',
+               help='Write merge directive to this file; '
+                    'use - for stdout.',
                type=unicode),
         Option('mail-to', help='Mail the request to this address.',
                type=unicode),

=== modified file 'bzrlib/diff.py'
--- a/bzrlib/diff.py	2008-04-03 00:37:18 +0000
+++ b/bzrlib/diff.py	2008-04-24 20:10:25 +0000
@@ -28,6 +28,7 @@
 import time
 
 from bzrlib import (
+    branch as _mod_branch,
     bzrdir,
     commands,
     errors,
@@ -447,10 +448,10 @@
                 return branch.basis_tree()
         else:
             return tree
-    revision = spec.in_store(branch)
-    revision_id = revision.rev_id
-    rev_branch = revision.branch
-    return rev_branch.repository.revision_tree(revision_id)
+    if not spec.needs_branch():
+        branch = _mod_branch.Branch.open(spec.get_branch())
+    revision_id = spec.as_revision_id(branch)
+    return branch.repository.revision_tree(revision_id)
 
 
 def _relative_paths_in_tree(tree, paths):

=== modified file 'bzrlib/errors.py'
--- a/bzrlib/errors.py	2008-04-12 06:46:35 +0000
+++ b/bzrlib/errors.py	2008-04-24 16:44:23 +0000
@@ -2551,6 +2551,18 @@
         BzrError.__init__(self, bzrdir=bzrdir, display_url=display_url)
 
 
+class UnsyncedBranches(BzrDirError):
+
+    _fmt = ("'%(display_url)s' is not in sync with %(target_url)s.  See"
+            " bzr help sync-for-reconfigure.")
+
+    def __init__(self, bzrdir, target_branch):
+        BzrDirError.__init__(self, bzrdir)
+        import bzrlib.urlutils as urlutils
+        self.target_url = urlutils.unescape_for_display(target_branch.base,
+                                                        'ascii')
+
+
 class AlreadyBranch(BzrDirError):
 
     _fmt = "'%(display_url)s' is already a branch."

=== modified file 'bzrlib/fetch.py'
--- a/bzrlib/fetch.py	2008-04-09 20:13:46 +0000
+++ b/bzrlib/fetch.py	2008-04-28 03:52:09 +0000
@@ -112,9 +112,11 @@
                 else:
                     self.to_repository.commit_write_group()
             finally:
-                if self.nested_pb is not None:
-                    self.nested_pb.finished()
-                self.to_repository.unlock()
+                try:
+                    if self.nested_pb is not None:
+                        self.nested_pb.finished()
+                finally:
+                    self.to_repository.unlock()
         finally:
             self.from_repository.unlock()
 

=== modified file 'bzrlib/help_topics/__init__.py'
--- a/bzrlib/help_topics/__init__.py	2008-04-02 04:16:23 +0000
+++ b/bzrlib/help_topics/__init__.py	2008-04-24 05:33:19 +0000
@@ -605,6 +605,26 @@
 differences.
 """
 
+_branches_out_of_sync = """Branches out of sync
+
+When reconfiguring a checkout, tree or branch into a lightweight checkout,
+a local branch must be destroyed.  (For checkouts, this is the local branch
+that serves primarily as a cache.)  If the branch-to-be-destroyed does not
+have the same last revision as the new reference branch for the lightweight
+checkout, data could be lost, so Bazaar refuses.
+
+How you deal with this depends on *why* the branches are out of sync.
+
+If you have a checkout and have done local commits, you can get back in sync
+by running "bzr update" (and possibly "bzr commit").
+
+If you have a branch and the remote branch is out-of-date, you can push
+the local changes using "bzr push".  If the local branch is out of date, you
+can do "bzr pull".  If both branches have had changes, you can merge, commit
+and then push your changes.  If you decide that some of the changes aren't
+useful, you can "push --overwrite" or "pull --overwrite" instead.
+"""
+
 
 # Register help topics
 topic_registry.register("revisionspec", _help_on_revisionspec,
@@ -662,6 +682,8 @@
                         'Information on working trees', SECT_CONCEPT)
 topic_registry.register('criss-cross', _criss_cross,
                         'Information on criss-cross merging', SECT_CONCEPT)
+topic_registry.register('sync-for-reconfigure', _branches_out_of_sync,
+                        'Information on criss-cross merging', SECT_CONCEPT)
 
 
 class HelpTopicIndex(object):

=== modified file 'bzrlib/knit.py'
--- a/bzrlib/knit.py	2008-04-09 23:35:55 +0000
+++ b/bzrlib/knit.py	2008-04-21 06:42:45 +0000
@@ -843,6 +843,23 @@
                             'on the source repository, and "bzr reconcile" '
                             'if necessary.' %
                             (version_id, parents[0]))
+                    if not self.delta:
+                        # We received a line-delta record for a non-delta knit.
+                        # Convert it to a fulltext.
+                        gzip_bytes = reader_callable(length)
+                        lines, sha1 = self._data._parse_record(
+                            version_id, gzip_bytes)
+                        delta = self.factory.parse_line_delta(lines,
+                                version_id)
+                        content = self.factory.make(
+                            self.get_lines(parents[0]), parents[0])
+                        content.apply_delta(delta, version_id)
+                        digest, len, content = self.add_lines(
+                            version_id, parents, content.text())
+                        if digest != sha1:
+                            raise errors.VersionedFileInvalidChecksum(version)
+                        continue
+
                 self._add_raw_records(
                     [(version_id, options, parents, length)],
                     reader_callable(length))

=== modified file 'bzrlib/log.py'
--- a/bzrlib/log.py	2008-04-18 17:54:34 +0000
+++ b/bzrlib/log.py	2008-04-28 03:52:09 +0000
@@ -464,8 +464,10 @@
     # This asks for all mainline revisions, which means we only have to spider
     # sideways, rather than depth history. That said, its still size-of-history
     # and should be addressed.
+    # mainline_revisions always includes an extra revision at the beginning, so
+    # don't request it.
     parent_map = dict(((key, value) for key, value in
-        graph.iter_ancestry(mainline_revisions) if value is not None))
+        graph.iter_ancestry(mainline_revisions[1:]) if value is not None))
     sorted_rev_list = topo_sort(parent_map.items())
     ancestry = {}
     for rev in sorted_rev_list:

=== modified file 'bzrlib/reconfigure.py'
--- a/bzrlib/reconfigure.py	2008-04-12 05:48:07 +0000
+++ b/bzrlib/reconfigure.py	2008-04-24 04:58:42 +0000
@@ -203,6 +203,11 @@
             changes = self.tree.changes_from(self.tree.basis_tree())
             if changes.has_changed():
                 raise errors.UncommittedChanges(self.tree)
+        if self._create_reference and self.local_branch is not None:
+            reference_branch = branch.Branch.open(self._select_bind_location())
+            if (reference_branch.last_revision() !=
+                self.local_branch.last_revision()):
+                raise errors.UnsyncedBranches(self.bzrdir, reference_branch)
 
     def _select_bind_location(self):
         """Select a location to bind or create a reference to.

=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py	2008-04-10 16:41:50 +0000
+++ b/bzrlib/remote.py	2008-04-21 05:51:56 +0000
@@ -859,7 +859,9 @@
         body = self._serialise_search_recipe(recipe)
         path = self.bzrdir._path_for_remote_call(self._client)
         for key in keys:
-            assert type(key) is str
+            if type(key) is not str:
+                raise ValueError(
+                    "key %r not a plain string" % (key,))
         verb = 'Repository.get_parent_map'
         args = (path,) + tuple(keys)
         try:

=== modified file 'bzrlib/repofmt/knitrepo.py'
--- a/bzrlib/repofmt/knitrepo.py	2008-04-04 00:06:58 +0000
+++ b/bzrlib/repofmt/knitrepo.py	2008-04-25 23:14:10 +0000
@@ -161,7 +161,6 @@
             raise errors.NoSuchRevision(self, revision_id)
 
     @symbol_versioning.deprecated_method(symbol_versioning.one_two)
-    @needs_read_lock
     def get_data_stream(self, revision_ids):
         """See Repository.get_data_stream.
         
@@ -170,7 +169,6 @@
         search_result = self.revision_ids_to_search_result(set(revision_ids))
         return self.get_data_stream_for_search(search_result)
 
-    @needs_read_lock
     def get_data_stream_for_search(self, search):
         """See Repository.get_data_stream_for_search."""
         item_keys = self.item_keys_introduced_by(search.get_keys())

=== modified file 'bzrlib/repository.py'
--- a/bzrlib/repository.py	2008-04-16 14:54:19 +0000
+++ b/bzrlib/repository.py	2008-04-28 05:54:46 +0000
@@ -1110,7 +1110,6 @@
         rev_tmp.seek(0)
         return rev_tmp.getvalue()
 
-    @needs_read_lock
     def get_deltas_for_revisions(self, revisions):
         """Produce a generator of revision deltas.
         
@@ -1447,7 +1446,6 @@
         # maybe this generator should explicitly have the contract that it
         # should not be iterated until the previously yielded item has been
         # processed?
-        self.lock_read()
         inv_w = self.get_inventory_weave()
 
         # file ids that changed
@@ -1476,7 +1474,6 @@
                 pass
             else:
                 revisions_with_signatures.add(rev_id)
-        self.unlock()
         yield ("signatures", None, revisions_with_signatures)
 
         # revisions
@@ -1682,7 +1679,6 @@
             inv = self.get_revision_inventory(revision_id)
             return RevisionTree(self, inv, revision_id)
 
-    @needs_read_lock
     def revision_trees(self, revision_ids):
         """Return Tree for a revision on this branch.
 
@@ -2746,6 +2742,11 @@
             # inventory parsing etc, IFF nothing to be copied is in the target.
             # till then:
             revision_ids = self.source.all_revision_ids()
+            revision_keys = [(revid,) for revid in revision_ids]
+            index = self.target._pack_collection.revision_index.combined_index
+            present_revision_ids = set(item[1][0] for item in
+                index.iter_entries(revision_keys))
+            revision_ids = set(revision_ids) - present_revision_ids
             # implementing the TODO will involve:
             # - detecting when all of a pack is selected
             # - avoiding as much as possible pre-selection, so the

=== modified file 'bzrlib/revisionspec.py'
--- a/bzrlib/revisionspec.py	2008-03-29 21:16:20 +0000
+++ b/bzrlib/revisionspec.py	2008-04-24 20:10:25 +0000
@@ -771,6 +771,7 @@
         other_branch = Branch.open(self.spec)
         last_revision = other_branch.last_revision()
         last_revision = revision.ensure_null(last_revision)
+        context_branch.fetch(other_branch, last_revision)
         if last_revision == revision.NULL_REVISION:
             raise errors.NoCommits(other_branch)
         return last_revision

=== modified file 'bzrlib/smart/repository.py'
--- a/bzrlib/smart/repository.py	2008-03-28 07:37:07 +0000
+++ b/bzrlib/smart/repository.py	2008-04-26 16:34:47 +0000
@@ -412,14 +412,8 @@
         pack = ContainerSerialiser()
         buffer.write(pack.begin())
         try:
-            try:
-                for name_tuple, bytes in stream:
-                    buffer.write(pack.bytes_record(bytes, [name_tuple]))
-            except:
-                # Undo the lock_read that happens once the iterator from
-                # get_data_stream is started.
-                repository.unlock()
-                raise
+            for name_tuple, bytes in stream:
+                buffer.write(pack.bytes_record(bytes, [name_tuple]))
         except errors.RevisionNotPresent, e:
             return FailedSmartServerResponse(('NoSuchRevision', e.revision_id))
         buffer.write(pack.end())

=== modified file 'bzrlib/store/revision/knit.py'
--- a/bzrlib/store/revision/knit.py	2008-04-04 00:06:58 +0000
+++ b/bzrlib/store/revision/knit.py	2008-04-21 06:42:45 +0000
@@ -113,7 +113,11 @@
 
     def get_revision_file(self, transaction):
         """Get the revision versioned file object."""
-        return self.versioned_file_store.get_weave_or_empty('revisions', transaction)
+        vf = self.versioned_file_store.get_weave_or_empty('revisions', transaction)
+        # The revisions knit should always be non-delta, so force delta=False
+        # here.
+        vf.delta = False
+        return vf
 
     def get_signature_file(self, transaction):
         """Get the signature text versioned file object."""

=== modified file 'bzrlib/tests/blackbox/test_version.py'
--- a/bzrlib/tests/blackbox/test_version.py	2008-03-20 06:29:00 +0000
+++ b/bzrlib/tests/blackbox/test_version.py	2008-04-10 07:02:31 +0000
@@ -44,6 +44,10 @@
         self.assertContainsRe(out, r"(?m)^  Bazaar configuration:")
         self.assertContainsRe(out, r'(?m)^  Bazaar log file:.*\.bzr\.log')
 
+    def test_version_short(self):
+        out = self.run_bzr(["version", "--short"])[0]
+        self.assertEqualDiff(out, bzrlib.version_string + '\n')
+
 
 class TestVersionUnicodeOutput(TestCaseInTempDir):
 

=== modified file 'bzrlib/tests/interrepository_implementations/test_interrepository.py'
--- a/bzrlib/tests/interrepository_implementations/test_interrepository.py	2008-03-24 14:40:52 +0000
+++ b/bzrlib/tests/interrepository_implementations/test_interrepository.py	2008-04-26 06:07:28 +0000
@@ -236,6 +236,7 @@
         # for during pull operations
         inv = source.get_inventory('a')
         source.lock_write()
+        self.addCleanup(source.unlock)
         source.start_write_group()
         inv['id'].revision = 'b'
         inv.revision_id = 'b'
@@ -249,7 +250,6 @@
         rev.parent_ids = ['a']
         source.add_revision('b', rev)
         source.commit_write_group()
-        source.unlock()
         self.assertRaises(errors.RevisionNotPresent, target.fetch, source)
         self.assertFalse(target.has_revision('b'))
 

=== modified file 'bzrlib/tests/repository_implementations/test_fetch.py'
--- a/bzrlib/tests/repository_implementations/test_fetch.py	2008-04-10 06:08:55 +0000
+++ b/bzrlib/tests/repository_implementations/test_fetch.py	2008-04-25 22:12:34 +0000
@@ -141,3 +141,11 @@
         # without causing any errors.
         target_repo.fetch(source_repo, revision_id='rev1')
 
+    def test_fetch_all_same_revisions_twice(self):
+        # Blind-fetching all the same revisions twice should succeed and be a
+        # no-op the second time.
+        repo = self.make_repository('repo')
+        tree = self.make_branch_and_tree('tree')
+        revision_id = tree.commit('test')
+        repo.fetch(tree.branch.repository)
+        repo.fetch(tree.branch.repository)

=== modified file 'bzrlib/tests/repository_implementations/test_repository.py'
--- a/bzrlib/tests/repository_implementations/test_repository.py	2008-04-10 04:22:38 +0000
+++ b/bzrlib/tests/repository_implementations/test_repository.py	2008-04-26 16:34:47 +0000
@@ -404,6 +404,8 @@
         tree.add('foo', 'file1')
         tree.commit('message', rev_id='rev_id')
         repo = tree.branch.repository
+        repo.lock_read()
+        self.addCleanup(repo.unlock)
         try:
             stream = self.applyDeprecated(one_two, repo.get_data_stream,
                 ['rev_id'])
@@ -424,6 +426,8 @@
         # Get a data stream (a file-like object) for that revision
         search = graph.SearchResult(set(['rev_id']), set([NULL_REVISION]), 1,
             set(['rev_id']))
+        repo.lock_read()
+        self.addCleanup(repo.unlock)
         try:
             stream = repo.get_data_stream_for_search(search)
         except NotImplementedError:
@@ -468,6 +472,8 @@
         dest_repo = self.make_repository('dest')
         search = dest_repo.search_missing_revision_ids(source_repo,
             revision_id='rev_id')
+        source_repo.lock_read()
+        self.addCleanup(source_repo.unlock)
         try:
             stream = source_repo.get_data_stream_for_search(search)
         except NotImplementedError, e:
@@ -550,6 +556,8 @@
         tree.add('foo', 'file1')
         tree.commit('message', rev_id='rev_id')
         repo = tree.branch.repository
+        repo.lock_read()
+        self.addCleanup(repo.unlock)
 
         # Item keys will be in this order, for maximum convenience for
         # generating data to insert into knit repository:

=== modified file 'bzrlib/tests/test_knit.py'
--- a/bzrlib/tests/test_knit.py	2008-04-09 23:35:55 +0000
+++ b/bzrlib/tests/test_knit.py	2008-04-21 06:42:45 +0000
@@ -1505,6 +1505,10 @@
         for plan_line, expected_line in zip(plan, AB_MERGE):
             self.assertEqual(plan_line, expected_line)
 
+
+class GetDataStreamTests(KnitTests):
+    """Tests for get_data_stream."""
+
     def test_get_stream_empty(self):
         """Get a data stream for an empty knit file."""
         k1 = self.make_test_knit()
@@ -1696,6 +1700,10 @@
             bytes = reader_callable(length)
             self.assertRecordContentEqual(k1, version_id, bytes)
 
+
+class InsertDataStreamTests(KnitTests):
+    """Tests for insert_data_stream."""
+
     def assertKnitFilesEqual(self, knit1, knit2):
         """Assert that the contents of the index and data files of two knits are
         equal.
@@ -1720,7 +1728,7 @@
             self.assertEqual(left.annotate(version),
                 right.annotate(version))
 
-    def test_insert_data_stream_empty(self):
+    def test_empty_stream(self):
         """Inserting a data stream with no records should not put any data into
         the knit.
         """
@@ -1733,7 +1741,7 @@
                          k1.transport.get_bytes(k1._index._filename),
                          "The .kndx should have nothing apart from the header.")
 
-    def test_insert_data_stream_one_record(self):
+    def test_one_record(self):
         """Inserting a data stream with one record from a knit with one record
         results in byte-identical files.
         """
@@ -1744,7 +1752,7 @@
         target.insert_data_stream(data_stream)
         self.assertKnitFilesEqual(source, target)
 
-    def test_insert_data_stream_annotated_unannotated(self):
+    def test_annotated_stream_into_unannotated_knit(self):
         """Inserting an annotated datastream to an unannotated knit works."""
         # case one - full texts.
         source = self.make_test_knit(name='source', annotate=True)
@@ -1757,7 +1765,7 @@
         target.insert_data_stream(source.get_data_stream(['text-b']))
         self.assertKnitValuesEqual(source, target)
 
-    def test_insert_data_stream_unannotated_annotated(self):
+    def test_unannotated_stream_into_annotated_knit(self):
         """Inserting an unannotated datastream to an annotated knit works."""
         # case one - full texts.
         source = self.make_test_knit(name='source', annotate=False)
@@ -1770,7 +1778,7 @@
         target.insert_data_stream(source.get_data_stream(['text-b']))
         self.assertKnitValuesEqual(source, target)
 
-    def test_insert_data_stream_records_already_present(self):
+    def test_records_already_present(self):
         """Insert a data stream where some records are alreday present in the
         target, and some not.  Only the new records are inserted.
         """
@@ -1788,7 +1796,7 @@
         # record was not added a second time.
         self.assertKnitFilesEqual(source, target)
 
-    def test_insert_data_stream_multiple_records(self):
+    def test_multiple_records(self):
         """Inserting a data stream of all records from a knit with multiple
         records results in byte-identical files.
         """
@@ -1803,7 +1811,7 @@
         
         self.assertKnitFilesEqual(source, target)
 
-    def test_insert_data_stream_ghost_parent(self):
+    def test_ghost_parent(self):
         """Insert a data stream with a record that has a ghost parent."""
         # Make a knit with a record, text-a, that has a ghost parent.
         source = self.make_test_knit(name='source')
@@ -1824,7 +1832,7 @@
             target.get_parent_map(['text-a', 'text-ghost']))
         self.assertEqual(split_lines(TEXT_1), target.get_lines('text-a'))
 
-    def test_insert_data_stream_inconsistent_version_lines(self):
+    def test_inconsistent_version_lines(self):
         """Inserting a data stream which has different content for a version_id
         than already exists in the knit will raise KnitCorrupt.
         """
@@ -1838,7 +1846,7 @@
         self.assertRaises(
             errors.KnitCorrupt, target.insert_data_stream, data_stream)
 
-    def test_insert_data_stream_inconsistent_version_parents(self):
+    def test_inconsistent_version_parents(self):
         """Inserting a data stream which has different parents for a version_id
         than already exists in the knit will raise KnitCorrupt.
         """
@@ -1853,7 +1861,7 @@
         self.assertRaises(
             errors.KnitCorrupt, target.insert_data_stream, data_stream)
 
-    def test_insert_data_stream_unknown_format(self):
+    def test_unknown_stream_format(self):
         """A data stream in a different format to the target knit cannot be
         inserted.
 
@@ -1867,7 +1875,7 @@
             errors.KnitDataStreamUnknown,
             target.insert_data_stream, data_stream)
 
-    def test_insert_data_stream_bug_208418(self):
+    def test_bug_208418(self):
         """You can insert a stream with an incompatible format, even when:
           * the stream has a line-delta record,
           * whose parent is in the target, also stored as a line-delta
@@ -1897,10 +1905,26 @@
         target.insert_data_stream(data_stream)
         # No errors should have been raised.
 
-
-    #  * test that a stream of "already present version, then new version"
-    #    inserts correctly.
-
+    def test_line_delta_record_into_non_delta_knit(self):
+        # Make a data stream with a line-delta record
+        source = self.make_test_knit(name='source', delta=True)
+        base_lines = split_lines(TEXT_1)
+        source.add_lines('version-1', [], base_lines)
+        source.add_lines('version-2', ['version-1'], base_lines + ['a\n'])
+        # The second record should be a delta.
+        self.assertEqual('line-delta', source._index.get_method('version-2'))
+        data_stream = source.get_data_stream(['version-1', 'version-2'])
+
+        # Insert the stream into a non-delta knit.
+        target = self.make_test_knit(name='target', delta=False)
+        target.insert_data_stream(data_stream)
+        
+        # Both versions are fulltexts in the target
+        self.assertEqual('fulltext', target._index.get_method('version-1'))
+        self.assertEqual('fulltext', target._index.get_method('version-2'))
+
+
+class DataStreamTests(KnitTests):
 
     def assertMadeStreamKnit(self, source_knit, versions, target_knit):
         """Assert that a knit made from a stream is as expected."""

=== modified file 'bzrlib/tests/test_reconfigure.py'
--- a/bzrlib/tests/test_reconfigure.py	2008-04-12 06:37:15 +0000
+++ b/bzrlib/tests/test_reconfigure.py	2008-04-25 22:16:00 +0000
@@ -197,12 +197,21 @@
         self.assertRaises(errors.AlreadyCheckout,
                           reconfigure.Reconfigure.to_checkout, checkout.bzrdir)
 
-    def test_checkout_to_lightweight(self):
+    def make_unsynced_checkout(self):
         parent = self.make_branch('parent')
         checkout = parent.create_checkout('checkout')
         checkout.commit('test', rev_id='new-commit', local=True)
         reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(
             checkout.bzrdir)
+        return checkout, parent, reconfiguration
+
+    def test_unsynced_checkout_to_lightweight(self):
+        checkout, parent, reconfiguration = self.make_unsynced_checkout()
+        self.assertRaises(errors.UnsyncedBranches, reconfiguration.apply)
+
+    def test_synced_checkout_to_lightweight(self):
+        checkout, parent, reconfiguration = self.make_unsynced_checkout()
+        parent.pull(checkout.branch)
         reconfiguration.apply()
         wt = checkout.bzrdir.open_workingtree()
         self.assertTrue(parent.repository.has_same_location(
@@ -215,6 +224,7 @@
         parent = self.make_branch('parent')
         child = parent.bzrdir.sprout('child').open_workingtree()
         child.commit('test', rev_id='new-commit')
+        parent.pull(child.branch)
         child.bzrdir.destroy_workingtree()
         reconfiguration = reconfigure.Reconfigure.to_lightweight_checkout(
             child.bzrdir)
@@ -352,3 +362,18 @@
         tree = self.make_branch_and_tree('tree')
         self.assertRaises(errors.AlreadyStandalone,
                           reconfigure.Reconfigure.to_standalone, tree.bzrdir)
+
+    def make_unsynced_branch_reconfiguration(self):
+        parent = self.make_branch_and_tree('parent')
+        parent.commit('commit 1')
+        child = parent.bzrdir.sprout('child').open_workingtree()
+        child.commit('commit 2')
+        return reconfigure.Reconfigure.to_lightweight_checkout(child.bzrdir)
+
+    def test_unsynced_branch_to_lightweight_checkout_unforced(self):
+        reconfiguration = self.make_unsynced_branch_reconfiguration()
+        self.assertRaises(errors.UnsyncedBranches, reconfiguration.apply)
+
+    def test_unsynced_branch_to_lightweight_checkout_forced(self):
+        reconfiguration = self.make_unsynced_branch_reconfiguration()
+        reconfiguration.apply(force=True)

=== modified file 'bzrlib/tests/test_repository.py'
--- a/bzrlib/tests/test_repository.py	2008-02-19 03:58:32 +0000
+++ b/bzrlib/tests/test_repository.py	2008-04-26 16:34:47 +0000
@@ -781,6 +781,8 @@
         empty_repo = self.make_repository('empty-repo')
         search = graph.SearchResult(set(['rev1a', 'rev2', 'rev3']),
             set(), 3, ['rev1a', 'rev2', 'rev3'])
+        broken_repo.lock_read()
+        self.addCleanup(broken_repo.unlock)
         stream = broken_repo.get_data_stream_for_search(search)
         empty_repo.lock_write()
         self.addCleanup(empty_repo.unlock)

=== modified file 'bzrlib/tests/test_store.py'
--- a/bzrlib/tests/test_store.py	2008-04-08 00:57:07 +0000
+++ b/bzrlib/tests/test_store.py	2008-04-28 03:52:09 +0000
@@ -433,4 +433,3 @@
         self._transaction = transactions.ReadOnlyTransaction()
         vf = self.vfstore.get_weave_or_empty('id', self._transaction)
         self.assertRaises(errors.ReadOnlyError, vf.add_lines, 'b', [], [])
-

=== modified file 'bzrlib/transport/ftp.py'
--- a/bzrlib/transport/ftp.py	2008-03-30 01:41:50 +0000
+++ b/bzrlib/transport/ftp.py	2008-04-27 22:38:34 +0000
@@ -180,6 +180,8 @@
             or 'file doesn\'t exist' in s
             or 'rnfr command failed.' in s # vsftpd RNFR reply if file not found
             or 'file/directory not found' in s # filezilla server
+            # Microsoft FTP-Service RNFR reply if file not found
+            or (s.startswith('550 ') and 'unable to rename to' in extra)
             ):
             raise errors.NoSuchFile(path, extra=extra)
         if ('file exists' in s):

=== modified file 'doc/developers/HACKING.txt'
--- a/doc/developers/HACKING.txt	2008-04-11 07:42:28 +0000
+++ b/doc/developers/HACKING.txt	2008-04-28 03:52:09 +0000
@@ -1846,37 +1846,22 @@
         if version_info[3] == 'final':
             version_string = '%d.%d.%d' % version_info[:3]
 
-#. Send the changes to PQM, to update the official master branch.
+#. Submit those changes to PQM for merge into the appropriate release
+   branch.
 
 #. When PQM succeeds, pull down the master release branch.
 
-#. Merge the release branch back into the trunk.  Check that changes in NEWS were merged into the right sections.  If it's not already done, advance the version number in bzr and bzrlib/__init__.py Submit this back into pqm for bzr.dev.
-
-#. Make a distribution directory by running e.g. ``bzr export /tmp/bzr-<version>/`` in the working directory.
-
-#. Run make in /tmp/bzr-<version>. This creates the extensions from the pyrex source.
-
-#. Run the test suite in the distribution directory
+#. Run ``make dist`` from a clean copy of the release branch; this will
+   produce a tarball and prompt you to sign it.
+
+#. Unpack the tarball into a temporary directory and run ``make check`` in
+   that directory.
 
 #. Run ``setup.py install`` --root=prefix to do a test install into your system directory, home directory, or some other prefix.  Check the install worked and that the installed version is usable. (run the bzr script from the installed path with PYTHONPATH set to the site-packages directory it created). i.e. ::
 
     python setup.py install --root=installed
     PYTHONPATH=installed/usr/lib/python2.4/site-packages installed/usr/bin/bzr
 
-#. Clean the tree to get rid of .pyc files etc: make clean && rm -rf build && rm bzrlib/_*.c bzrlib/_*.so
-
-#. Generate the reference documentation in text format: make doc/en/user-reference/bzr_man.txt.
-
-#. Change back to your original branch and then run: make clean && make to create the compiled pyrex extensions.  You then need to copy the .c files over to the exported directory. 
-   
-   ``find . -name "*.c"`` will tell you which files you need.
-
-#. Create the release tarball::
-   
-     cd /tmp && tar czf bzr-<version>.tar.gz bzr-<version>
-
-#. Sign the tarball with e.g. ``gpg --detach-sign -a bzr-0.10rc1.tar.gz``
-
 
 Publishing the release
 ----------------------
@@ -1893,7 +1878,8 @@
    (These used to also be uploaded to 
    <sftp://escudero.ubuntu.com/srv/bazaar.canonical.com/www/releases/src>
    but that's not accessible to all developers, and gets some mime types
-   wrong...)
+   wrong...  This upload can still be done with ``make
+   dist-upload-escudero``.)
 
 #. Link from http://bazaar-vcs.org/Download to the tarball and signature.
 
@@ -1966,6 +1952,16 @@
    Remember to check the results afterwards.
 
 
+Merging the released code back to trunk
+---------------------------------------
+
+Merge the release branch back into the trunk.  Check that changes in NEWS
+were merged into the right sections.  If it's not already done, advance
+the version number in ``bzr`` and ``bzrlib/__init__.py``.  Submit this
+back into pqm for bzr.dev.
+
+
+
 Making Win32 installers
 -----------------------
 

=== modified file 'doc/en/user-guide/controlling_registration.txt'
--- a/doc/en/user-guide/controlling_registration.txt	2008-04-10 00:53:43 +0000
+++ b/doc/en/user-guide/controlling_registration.txt	2008-04-18 01:06:17 +0000
@@ -84,6 +84,11 @@
     % bzr add .bzrignore
     % bzr commit -m "Add ignore patterns"
 
+The command ``bzr ignore PATTERN`` can be used to easily add PATTERN to
+the ``.bzrignore file`` (creating it if necessary and registering it to
+be tracked by Bazaar).  Removing and modifying patterns are done by
+directly editing the ``.bzrignore`` file.
+
 Global ignores
 --------------
 

=== modified file 'doc/en/user-guide/sending_changes.txt'
--- a/doc/en/user-guide/sending_changes.txt	2007-12-07 03:37:32 +0000
+++ b/doc/en/user-guide/sending_changes.txt	2008-04-24 01:27:26 +0000
@@ -34,22 +34,30 @@
 Creating a merge directive
 --------------------------
 
-To create a merge directive, use the ``send`` command. For example,
-this command creates a merge directive and saves it into the
-nominated output file::
+To create and optionally send a merge directive, use the ``send`` command. 
+
+By default, ``send`` will email the merge directive to the "submission
+address" for the branch, which is typically the lead developer or the
+development mailing list.  
+``send`` without options will create a merge directive, fire up your email
+tool and attach it, ready for you to add the explanatory text bit.
+(See the online help for ``send`` and
+`Configuration Settings <../user-reference/bzr_man.html#configuration-settings>`_
+in the User Reference for further details on how to configure this.)
+
+Most projects like people to add some explanation to the mail along with
+the patch, explaining the reason for the patch, and why it is done the way
+it is.  This gives a reviewer some context before going into the
+line-by-line diff.
+
+Alternatively, if the ``--output`` (or ``-o``) option is given, ``send``
+will write the merge directive to a file, so you can mail it yourself,
+examine it, or save it for later use.  If an output file of ``-`` is
+given, the directive is written to stdout.  For example::
 
   cd X-fix-123
   bzr send -o ../fix-123.patch
 
-That file can then be emailed to a reviewer, together with an
-explanation of how and why you fixed the problem the way you did, say.
-
-Emailing merge directives is such a common thing that the ``send`` command
-without options will create a merge directive, fire up your email
-tool and attach it, ready for you to add the explanatory text bit.
-See the online help for ``send`` and
-`Configuration Settings <../user-reference/bzr_man.html#configuration-settings>`_
-in the User Reference for further details on how to configure this.
 
 Applying a merge directive
 --------------------------



More information about the bazaar-commits mailing list