Rev 3779: Merge bzr.dev 3783, resolve NEWS in http://bzr.arbash-meinel.com/branches/bzr/1.9-dev/annotate_cleanups
John Arbash Meinel
john at arbash-meinel.com
Fri Oct 17 20:59:06 BST 2008
At http://bzr.arbash-meinel.com/branches/bzr/1.9-dev/annotate_cleanups
------------------------------------------------------------
revno: 3779
revision-id: john at arbash-meinel.com-20081017195853-i31d3g7sur1prgvi
parent: john at arbash-meinel.com-20081017161420-q7au1ngfvf2rwb4j
parent: pqm at pqm.ubuntu.com-20081017125551-l5zi213vopny82nt
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: annotate_cleanups
timestamp: Fri 2008-10-17 14:58:53 -0500
message:
Merge bzr.dev 3783, resolve NEWS
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/patches.py patches.py-20050727183609-378c1cc5972ce908
bzrlib/plugins/launchpad/account.py account.py-20071011033320-50y6vfftywf4yllw-1
bzrlib/plugins/launchpad/test_account.py test_account.py-20071011033320-50y6vfftywf4yllw-2
bzrlib/plugins/launchpad/test_lp_directory.py test_lp_indirect.py-20070126002743-oyle362tzv9cd8mi-1
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
bzrlib/tests/test_patches.py test_patches.py-20051231203844-f4974d20f6aea09c
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
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
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3777.2.6
revision-id: pqm at pqm.ubuntu.com-20081017125551-l5zi213vopny82nt
parent: pqm at pqm.ubuntu.com-20081016213135-0115pw9c95l2dyxq
parent: aaron at aaronbentley.com-20081017122234-4lygct4bu1hsube6
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2008-10-17 13:55:51 +0100
message:
Implement default ssh usernames via launchpad-login (abentley)
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/plugins/launchpad/account.py account.py-20071011033320-50y6vfftywf4yllw-1
bzrlib/plugins/launchpad/test_account.py test_account.py-20071011033320-50y6vfftywf4yllw-2
bzrlib/plugins/launchpad/test_lp_directory.py test_lp_indirect.py-20070126002743-oyle362tzv9cd8mi-1
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
------------------------------------------------------------
revno: 3777.1.18
revision-id: aaron at aaronbentley.com-20081017122234-4lygct4bu1hsube6
parent: aaron at aaronbentley.com-20081016184810-ago29htjdh2z0x0t
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Fri 2008-10-17 08:22:34 -0400
message:
Fix None handling wrt auth upgrades
modified:
bzrlib/plugins/launchpad/account.py account.py-20071011033320-50y6vfftywf4yllw-1
bzrlib/plugins/launchpad/test_account.py test_account.py-20071011033320-50y6vfftywf4yllw-2
bzrlib/plugins/launchpad/test_lp_directory.py test_lp_indirect.py-20070126002743-oyle362tzv9cd8mi-1
------------------------------------------------------------
revno: 3777.1.17
revision-id: aaron at aaronbentley.com-20081016184810-ago29htjdh2z0x0t
parent: aaron at aaronbentley.com-20081016184139-ve0w21oeg0by6he6
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Thu 2008-10-16 14:48:10 -0400
message:
Update NEWS
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3777.1.16
revision-id: aaron at aaronbentley.com-20081016184139-ve0w21oeg0by6he6
parent: aaron at aaronbentley.com-20081016183519-llt3cr4n24ymrlrh
parent: aaron at aaronbentley.com-20081016183758-1c4qosfpmdoee03b
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Thu 2008-10-16 14:41:39 -0400
message:
Merge with lower thread
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3777.6.3
revision-id: aaron at aaronbentley.com-20081016183758-1c4qosfpmdoee03b
parent: aaron at aaronbentley.com-20081016183032-cybgqp6y0ip27mem
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: set_credentials
timestamp: Thu 2008-10-16 14:37:58 -0400
message:
Update NEWS
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3777.1.15
revision-id: aaron at aaronbentley.com-20081016183519-llt3cr4n24ymrlrh
parent: aaron at aaronbentley.com-20081016183220-7e692v9fac5613zb
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Thu 2008-10-16 14:35:19 -0400
message:
Update docs
modified:
bzrlib/plugins/launchpad/account.py account.py-20071011033320-50y6vfftywf4yllw-1
------------------------------------------------------------
revno: 3777.1.14
revision-id: aaron at aaronbentley.com-20081016183220-7e692v9fac5613zb
parent: aaron at aaronbentley.com-20081016183043-v3d3226g1x7c05ns
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Thu 2008-10-16 14:32:20 -0400
message:
Adjust for new set_credentials signature
modified:
bzrlib/plugins/launchpad/account.py account.py-20071011033320-50y6vfftywf4yllw-1
bzrlib/plugins/launchpad/test_account.py test_account.py-20071011033320-50y6vfftywf4yllw-2
------------------------------------------------------------
revno: 3777.1.13
revision-id: aaron at aaronbentley.com-20081016183043-v3d3226g1x7c05ns
parent: aaron at aaronbentley.com-20081016160555-6ux64504nzwyxog9
parent: aaron at aaronbentley.com-20081016183032-cybgqp6y0ip27mem
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Thu 2008-10-16 14:30:43 -0400
message:
Merge set_credentials into launchpad-login
modified:
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
------------------------------------------------------------
revno: 3777.6.2
revision-id: aaron at aaronbentley.com-20081016183032-cybgqp6y0ip27mem
parent: aaron at aaronbentley.com-20081016182657-1xi0vmda0iffc2g8
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: set_credentials
timestamp: Thu 2008-10-16 14:30:32 -0400
message:
Reverse order of scheme and password
modified:
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
------------------------------------------------------------
revno: 3777.6.1
revision-id: aaron at aaronbentley.com-20081016182657-1xi0vmda0iffc2g8
parent: aaron at aaronbentley.com-20081016160425-z6e33epyqltcn6wj
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: set_credentials
timestamp: Thu 2008-10-16 14:26:57 -0400
message:
Update docs
modified:
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
------------------------------------------------------------
revno: 3777.1.12
revision-id: aaron at aaronbentley.com-20081016160555-6ux64504nzwyxog9
parent: aaron at aaronbentley.com-20081016160425-z6e33epyqltcn6wj
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Thu 2008-10-16 12:05:55 -0400
message:
Enable configuring ssh auth from launchpad-login, with auto-upgrade.
modified:
bzrlib/plugins/launchpad/account.py account.py-20071011033320-50y6vfftywf4yllw-1
bzrlib/plugins/launchpad/test_account.py test_account.py-20071011033320-50y6vfftywf4yllw-2
------------------------------------------------------------
revno: 3777.1.11
revision-id: aaron at aaronbentley.com-20081016160425-z6e33epyqltcn6wj
parent: aaron at aaronbentley.com-20081016132940-24l3emoih65h1nsq
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Thu 2008-10-16 12:04:25 -0400
message:
Ensure changed-name updates clear old values
modified:
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
------------------------------------------------------------
revno: 3777.1.10
revision-id: aaron at aaronbentley.com-20081016132940-24l3emoih65h1nsq
parent: aaron at aaronbentley.com-20081016130333-0cti66q6xo5napqd
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Thu 2008-10-16 09:29:40 -0400
message:
Ensure credentials are stored
modified:
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
------------------------------------------------------------
revno: 3777.1.9
revision-id: aaron at aaronbentley.com-20081016130333-0cti66q6xo5napqd
parent: aaron at aaronbentley.com-20081015211105-49xq5y8jnla6clni
parent: aaron at aaronbentley.com-20081016130324-547q140zwnh6g8aq
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Thu 2008-10-16 09:03:33 -0400
message:
Merge authconfig into launchpad-login
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3777.5.1
revision-id: aaron at aaronbentley.com-20081016130324-547q140zwnh6g8aq
parent: aaron at aaronbentley.com-20081015191156-mrykcuir96zszuh7
parent: pqm at pqm.ubuntu.com-20081016043554-38i4ho6svnlyba65
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: authconfig
timestamp: Thu 2008-10-16 09:03:24 -0400
message:
Merge with bzr.dev
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3777.1.8
revision-id: aaron at aaronbentley.com-20081015211105-49xq5y8jnla6clni
parent: aaron at aaronbentley.com-20081015191156-mrykcuir96zszuh7
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: launchpad-login
timestamp: Wed 2008-10-15 17:11:05 -0400
message:
Commit work-in-progress
modified:
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
------------------------------------------------------------
revno: 3777.2.5
revision-id: pqm at pqm.ubuntu.com-20081016213135-0115pw9c95l2dyxq
parent: pqm at pqm.ubuntu.com-20081016204321-ayg99pvl7sr7y6qu
parent: aaron at aaronbentley.com-20081016190501-rvjm4em0kmlilhyf
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2008-10-16 22:31:35 +0100
message:
PreviewTree.iter_changes accepts all standard parameters (abentley)
modified:
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
------------------------------------------------------------
revno: 3363.19.4
revision-id: aaron at aaronbentley.com-20081016190501-rvjm4em0kmlilhyf
parent: aaron at aaronbentley.com-20081014030954-g0ht1o6t40v7ecdp
parent: aaron at aaronbentley.com-20081016190448-2a4ilw7bqsw08190
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: fix-iter-changes
timestamp: Thu 2008-10-16 15:05:01 -0400
message:
Merge direct-patching into fix-iter-changes
modified:
bzrlib/patches.py patches.py-20050727183609-378c1cc5972ce908
------------------------------------------------------------
revno: 3363.19.3
revision-id: aaron at aaronbentley.com-20081014030954-g0ht1o6t40v7ecdp
parent: aaron at aaronbentley.com-20081014025056-dlyb96nmtv4aenuj
parent: aaron at aaronbentley.com-20081014030136-8h0rtrxhq8q1d1zu
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: fix-iter-changes
timestamp: Mon 2008-10-13 23:09:54 -0400
message:
Merge direct-patching into fix-iter-changes
modified:
bzrlib/patches.py patches.py-20050727183609-378c1cc5972ce908
bzrlib/tests/test_patches.py test_patches.py-20051231203844-f4974d20f6aea09c
------------------------------------------------------------
revno: 3363.19.2
revision-id: aaron at aaronbentley.com-20081014025056-dlyb96nmtv4aenuj
parent: aaron at aaronbentley.com-20081013150916-fq1vm0mvw72jcc3n
parent: aaron at aaronbentley.com-20081014025051-hd8sbbq3yeqrb49t
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: fix-iter-changes
timestamp: Mon 2008-10-13 22:50:56 -0400
message:
Merge direct-patching into fix-iter-changes
added:
bzrlib/tests/blackbox/test_dump_btree.py test_dump_btree.py-20081008203335-zkpcq230b6vubszz-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
doc/developers/ppa.txt ppa.txt-20080722055539-606u7t2z32t3ae4w-1
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3363.19.1
revision-id: aaron at aaronbentley.com-20081013150916-fq1vm0mvw72jcc3n
parent: aaron at aaronbentley.com-20081010231442-6be32m59zo304a90
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: merge-into2
timestamp: Mon 2008-10-13 11:09:16 -0400
message:
Make PreviewTree.iter_changes accept all options.
modified:
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
------------------------------------------------------------
revno: 3777.2.4
revision-id: pqm at pqm.ubuntu.com-20081016204321-ayg99pvl7sr7y6qu
parent: pqm at pqm.ubuntu.com-20081016131807-r3p1hsepd24feegv
parent: aaron at aaronbentley.com-20081016190448-2a4ilw7bqsw08190
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2008-10-16 21:43:21 +0100
message:
Add iter_patched_from_hunks to reduce API friction (abentley)
modified:
bzrlib/patches.py patches.py-20050727183609-378c1cc5972ce908
bzrlib/tests/test_patches.py test_patches.py-20051231203844-f4974d20f6aea09c
------------------------------------------------------------
revno: 3363.18.4
revision-id: aaron at aaronbentley.com-20081016190448-2a4ilw7bqsw08190
parent: aaron at aaronbentley.com-20081014030136-8h0rtrxhq8q1d1zu
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: direct-patching
timestamp: Thu 2008-10-16 15:04:48 -0400
message:
Updates from review (and a doc update)
modified:
bzrlib/patches.py patches.py-20050727183609-378c1cc5972ce908
------------------------------------------------------------
revno: 3363.18.3
revision-id: aaron at aaronbentley.com-20081014030136-8h0rtrxhq8q1d1zu
parent: aaron at aaronbentley.com-20081014025051-hd8sbbq3yeqrb49t
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: direct-patching
timestamp: Mon 2008-10-13 23:01:36 -0400
message:
Add tests for iter_patched_from_hunks
modified:
bzrlib/patches.py patches.py-20050727183609-378c1cc5972ce908
bzrlib/tests/test_patches.py test_patches.py-20051231203844-f4974d20f6aea09c
------------------------------------------------------------
revno: 3363.18.2
revision-id: aaron at aaronbentley.com-20081014025051-hd8sbbq3yeqrb49t
parent: aaron at aaronbentley.com-20081010231442-6be32m59zo304a90
parent: aaron at aaronbentley.com-20081014024517-pu1q1kz1v51rvk9f
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: direct-patching
timestamp: Mon 2008-10-13 22:50:51 -0400
message:
Merge merge-into2 into direct-patching
added:
bzrlib/tests/blackbox/test_dump_btree.py test_dump_btree.py-20081008203335-zkpcq230b6vubszz-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
doc/developers/ppa.txt ppa.txt-20080722055539-606u7t2z32t3ae4w-1
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3363.18.1
revision-id: aaron at aaronbentley.com-20081010231442-6be32m59zo304a90
parent: aaron at aaronbentley.com-20081010225929-08pkzo68wbfr3yqg
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: merge-into2
timestamp: Fri 2008-10-10 19:14:42 -0400
message:
Allow patching directly from parsed hunks
modified:
bzrlib/patches.py patches.py-20050727183609-378c1cc5972ce908
------------------------------------------------------------
revno: 3777.2.3
revision-id: pqm at pqm.ubuntu.com-20081016131807-r3p1hsepd24feegv
parent: pqm at pqm.ubuntu.com-20081016043554-38i4ho6svnlyba65
parent: v.ladeuil+lp at free.fr-20081016121145-0a86u6kjd4prz3nn
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2008-10-16 14:18:07 +0100
message:
Trivial doc fix
modified:
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
------------------------------------------------------------
revno: 3777.4.1
revision-id: v.ladeuil+lp at free.fr-20081016121145-0a86u6kjd4prz3nn
parent: pqm at pqm.ubuntu.com-20081016043554-38i4ho6svnlyba65
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 284343-doc
timestamp: Thu 2008-10-16 14:11:45 +0200
message:
Use '.patch. instead of '.diff'.
* HACKING.txt:
Fix the only occurrence of '.diff' in the whole documentation,
using '.patch' instead as we do in everywhere else.
modified:
doc/developers/HACKING.txt HACKING-20050805200004-2a5dc975d870f78c
------------------------------------------------------------
revno: 3777.2.2
revision-id: pqm at pqm.ubuntu.com-20081016043554-38i4ho6svnlyba65
parent: pqm at pqm.ubuntu.com-20081015214444-ztwoizx180edy73v
parent: mbp at sourcefrog.net-20081016035842-77pczqghpnd5rxkt
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2008-10-16 05:35:54 +0100
message:
(mbp) merge 1.8final back to trunk
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3777.3.1
revision-id: mbp at sourcefrog.net-20081016035842-77pczqghpnd5rxkt
parent: pqm at pqm.ubuntu.com-20081015214444-ztwoizx180edy73v
parent: pqm at pqm.ubuntu.com-20081016023607-p9j30et9foqm0wa7
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: integration
timestamp: Thu 2008-10-16 14:58:42 +1100
message:
merge 1.8final back to trunk
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3763.3.3
revision-id: pqm at pqm.ubuntu.com-20081016023607-p9j30et9foqm0wa7
parent: pqm at pqm.ubuntu.com-20081009001122-ftxm8443zmis8vm4
parent: mbp at sourcefrog.net-20081016015506-kr5oefh484xj90aw
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: 1.8
timestamp: Thu 2008-10-16 03:36:07 +0100
message:
(mbp) prepare 1.8final
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
------------------------------------------------------------
revno: 3763.7.2
revision-id: mbp at sourcefrog.net-20081016015506-kr5oefh484xj90aw
parent: mbp at sourcefrog.net-20081016015304-6rq775qvvlxtadk4
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: prepare-1.8
timestamp: Thu 2008-10-16 12:55:06 +1100
message:
Release bzr 1.8 final
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
------------------------------------------------------------
revno: 3763.7.1
revision-id: mbp at sourcefrog.net-20081016015304-6rq775qvvlxtadk4
parent: pqm at pqm.ubuntu.com-20081009001122-ftxm8443zmis8vm4
parent: andrew.bennetts at canonical.com-20081010070446-mqf1sj2g3fy7u6j1
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: prepare-1.8
timestamp: Thu 2008-10-16 12:53:04 +1100
message:
Merge Andrew's fix for 230902
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
------------------------------------------------------------
revno: 3763.6.1
revision-id: andrew.bennetts at canonical.com-20081010070446-mqf1sj2g3fy7u6j1
parent: pqm at pqm.ubuntu.com-20081009001122-ftxm8443zmis8vm4
parent: andrew.bennetts at canonical.com-20081007115411-uq38cuumnrw0trsm
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: push-unlock-1.8
timestamp: Fri 2008-10-10 18:04:46 +1100
message:
Merge fix for #230902, adding NEWS entry.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
------------------------------------------------------------
revno: 3758.1.1
revision-id: andrew.bennetts at canonical.com-20081007115411-uq38cuumnrw0trsm
parent: pqm at pqm.ubuntu.com-20081001235145-nh3r3qcg0nwwmvdg
committer: Andrew Bennetts <andrew.bennetts at canonical.com>
branch nick: push-unlock
timestamp: Tue 2008-10-07 22:54:11 +1100
message:
Fix #230902 by being more careful not to squash a pre-existing exception when calling foo.unlock()
modified:
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/tests/test_branch.py test_branch.py-20060116013032-97819aa07b8ab3b5
------------------------------------------------------------
revno: 3763.3.2
revision-id: pqm at pqm.ubuntu.com-20081009001122-ftxm8443zmis8vm4
parent: pqm at pqm.ubuntu.com-20081007091257-ec2725q2xsrji7dn
parent: mbp at sourcefrog.net-20081008225502-ekthueaqnz3cutg3
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: 1.8
timestamp: Thu 2008-10-09 01:11:22 +0100
message:
(mbp) define -DWIN32 for pyrex
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3763.5.4
revision-id: mbp at sourcefrog.net-20081008225502-ekthueaqnz3cutg3
parent: mbp at sourcefrog.net-20081008053353-aqjccu3zsifjz0f1
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: 277481-win32-pyrex
timestamp: Thu 2008-10-09 09:55:02 +1100
message:
News for 277481
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3763.5.3
revision-id: mbp at sourcefrog.net-20081008053353-aqjccu3zsifjz0f1
parent: mbp at sourcefrog.net-20081008011605-tzgv9owfn2wde4cg
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: 277481-win32-pyrex
timestamp: Wed 2008-10-08 16:33:53 +1100
message:
Review feedback on add_pyrex_extension
modified:
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3763.5.2
revision-id: mbp at sourcefrog.net-20081008011605-tzgv9owfn2wde4cg
parent: mbp at sourcefrog.net-20081008011111-z68x2eto2j52648n
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: prepare-1.8
timestamp: Wed 2008-10-08 12:16:05 +1100
message:
Set -DWIN32 for all pyrex extensions, not one by one
modified:
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3763.5.1
revision-id: mbp at sourcefrog.net-20081008011111-z68x2eto2j52648n
parent: pqm at pqm.ubuntu.com-20081007091257-ec2725q2xsrji7dn
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: prepare-1.8
timestamp: Wed 2008-10-08 12:11:11 +1100
message:
WIN32 must be defined when building all Pyrex extensions on Windows (#277481, from bialix)
modified:
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
------------------------------------------------------------
revno: 3777.2.1
revision-id: pqm at pqm.ubuntu.com-20081015214444-ztwoizx180edy73v
parent: pqm at pqm.ubuntu.com-20081014031836-0pn8u98igc7gvtv0
parent: aaron at aaronbentley.com-20081015191156-mrykcuir96zszuh7
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2008-10-15 22:44:44 +0100
message:
Enable specifying default ssh username in authentication.conf
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
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
------------------------------------------------------------
revno: 3777.1.7
revision-id: aaron at aaronbentley.com-20081015191156-mrykcuir96zszuh7
parent: aaron at aaronbentley.com-20081015190711-so8c7mo9rfzs479e
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: ssh-authconfig
timestamp: Wed 2008-10-15 15:11:56 -0400
message:
Restore AuthenticationConfig
modified:
bzrlib/transport/ssh.py ssh.py-20060824042150-0s9787kng6zv1nwq-1
------------------------------------------------------------
revno: 3777.1.6
revision-id: aaron at aaronbentley.com-20081015190711-so8c7mo9rfzs479e
parent: aaron at aaronbentley.com-20081015185954-6hm2y83u6fddrkeg
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: ssh-authconfig
timestamp: Wed 2008-10-15 15:07:11 -0400
message:
Update NEWS
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3777.1.5
revision-id: aaron at aaronbentley.com-20081015185954-6hm2y83u6fddrkeg
parent: aaron at aaronbentley.com-20081015185907-lw5srt2ah0huccvt
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: ssh-authconfig
timestamp: Wed 2008-10-15 14:59:54 -0400
message:
Remove AuthenticationConfig handling from Paramiko SSHVendor
modified:
bzrlib/transport/ssh.py ssh.py-20060824042150-0s9787kng6zv1nwq-1
------------------------------------------------------------
revno: 3777.1.4
revision-id: aaron at aaronbentley.com-20081015185907-lw5srt2ah0huccvt
parent: aaron at aaronbentley.com-20081015184528-mcdgasht0vz5bo8k
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: ssh-authconfig
timestamp: Wed 2008-10-15 14:59:07 -0400
message:
bzr+ssh and sftp both use ssh scheme.
modified:
bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
bzrlib/transport/sftp.py sftp.py-20051019050329-ab48ce71b7e32dfe
------------------------------------------------------------
revno: 3777.1.3
revision-id: aaron at aaronbentley.com-20081015184528-mcdgasht0vz5bo8k
parent: aaron at aaronbentley.com-20081015172318-kg6h9v0daz8m66ns
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: ssh-authconfig
timestamp: Wed 2008-10-15 14:45:28 -0400
message:
Use SSH default username from authentication.conf
modified:
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/transport/remote.py ssh.py-20060608202016-c25gvf1ob7ypbus6-1
------------------------------------------------------------
revno: 3777.1.2
revision-id: aaron at aaronbentley.com-20081015172318-kg6h9v0daz8m66ns
parent: aaron at aaronbentley.com-20081015155150-ewayhro15dhve4cs
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: ssh-authconfig
timestamp: Wed 2008-10-15 13:23:18 -0400
message:
Make testing more thorough
modified:
bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
------------------------------------------------------------
revno: 3777.1.1
revision-id: aaron at aaronbentley.com-20081015155150-ewayhro15dhve4cs
parent: pqm at pqm.ubuntu.com-20081014031836-0pn8u98igc7gvtv0
committer: Aaron Bentley <aaron at aaronbentley.com>
branch nick: ssh-authconfig
timestamp: Wed 2008-10-15 11:51:50 -0400
message:
Use auth.conf for sftp
modified:
bzrlib/tests/test_sftp_transport.py testsftp.py-20051027032739-247570325fec7e7e
bzrlib/transport/ftp/__init__.py ftp.py-20051116161804-58dc9506548c2a53
bzrlib/transport/sftp.py sftp.py-20051019050329-ab48ce71b7e32dfe
-------------- next part --------------
=== modified file 'NEWS'
--- a/NEWS 2008-10-17 16:14:20 +0000
+++ b/NEWS 2008-10-17 19:58:53 +0000
@@ -16,8 +16,24 @@
* ``bzr dump-btree`` is a hidden command introduced to allow dumping
the contents of a compressed btree file. (John Arbash Meinel)
+ * default username for bzr+ssh and sftp can be configured in
+ authentication.conf. (Aaron Bentley)
+
+ * launchpad-login now provides a default username for bzr+ssh and sftp
+ URLs, allowing username-free URLs to work for everyone. (Aaron Bentley)
+
BUG FIXES:
+ * A failure to load a plugin due to an IncompatibleAPI exception is
+ now correctly reported. (Robert Collins, #279451)
+
+ * API versioning support now has a multiple-version checking api
+ ``require_any_api``. (Robert Collins, #279447)
+
+ * ``bzr co`` uses less memory. It used to unpack the entire WT into
+ memory before writing it to disk. This was a little bit faster, but
+ consumed lots of memory. (John Arbash Meinel, #269456)
+
* Fixes to the ``annotate`` code. The fast-path which re-used the
stored deltas was accidentally disabled all the time, instead of
only when a branch was stacked. Second, the code would accidentally
@@ -33,17 +49,35 @@
INTERNALS:
+ * New AuthenticationConfig.set_credentials method allows easy programmatic
+ configuration of authetication credentials.
+
+ PORTABILITY:
+
+
+bzr 1.8 2008-10-16
+------------------
+
+Bazaar 1.8 includes several fixes that improve working tree performance,
+display of revision logs, and merges. The bzr testsuite now passes on OS
+X and Python 2.6, and almost completely passes on Windows. The
+smartserver code has gained several bug fixes and performance
+improvements, and can now run server-side hooks within an http server.
+
+ BUG FIXES:
+
+ * Fix "Must end write group" error when another error occurs during
+ ``bzr push``. (Andrew Bennetts, #230902)
+
+ PORTABILITY:
+
+ * Some Pyrex versions require the WIN32 macro defined to compile on
+ that platform. (Alexander Belchenko, Martin Pool, #277481)
+
bzr 1.8rc1 2008-10-07
---------------------
-Bazaar 1.8 includes several fixes that improve working tree performance,
-display of revision logs, and merges. We've also fixed, and the bzr
-testsuite now passes on OS X and Python 2.6, and almost completely passes
-on Windows. The smartserver code has gained several bug fixes and
-performance improvements, and can now run server-side hooks within an http
-server.
-
CHANGES:
* ``bzr log file`` has been changed. It now uses a different method
@@ -116,24 +150,14 @@
BUG FIXES:
- * API versioning support now has a multiple-version checking api
- ``require_any_api``. (Robert Collins, #279447)
-
* Avoid random failures arising from misinterpreted ``errno`` values
in ``_readdir_pyx.read_dir``.
(Martin Pool, #279381)
- * A failure to load a plugin due to an IncompatibleAPI exception is
- now correctly reported. (Robert Collins, #279451)
-
* Branching from a shared repository on a smart server into a new
repository now preserves the repository format.
(Andrew Bennetts, #269214)
- * ``bzr co`` uses less memory. It used to unpack the entire WT into
- memory before writing it to disk. This was a little bit faster, but
- consumed lots of memory. (John Arbash Meinel, #269456)
-
* ``bzr log`` now accepts a ``--change`` option.
(Vincent Ladeuil, #248427)
=== modified file 'bzrlib/branch.py'
--- a/bzrlib/branch.py 2008-09-25 22:25:09 +0000
+++ b/bzrlib/branch.py 2008-10-07 11:54:11 +0000
@@ -1743,14 +1743,10 @@
"""
# TODO: Public option to disable running hooks - should be trivial but
# needs tests.
- target.lock_write()
- try:
- result = self._push_with_bound_branches(target, overwrite,
- stop_revision,
- _override_hook_source_branch=_override_hook_source_branch)
- return result
- finally:
- target.unlock()
+ return _run_with_write_locked_target(
+ target, self._push_with_bound_branches, target, overwrite,
+ stop_revision,
+ _override_hook_source_branch=_override_hook_source_branch)
def _push_with_bound_branches(self, target, overwrite,
stop_revision,
@@ -2445,3 +2441,37 @@
branch._set_config_location('stacked_on_location', '')
# update target format
branch._transport.put_bytes('format', format.get_format_string())
+
+
+
+def _run_with_write_locked_target(target, callable, *args, **kwargs):
+ """Run ``callable(*args, **kwargs)``, write-locking target for the
+ duration.
+
+ _run_with_write_locked_target will attempt to release the lock it acquires.
+
+ If an exception is raised by callable, then that exception *will* be
+ propagated, even if the unlock attempt raises its own error. Thus
+ _run_with_write_locked_target should be preferred to simply doing::
+
+ target.lock_write()
+ try:
+ return callable(*args, **kwargs)
+ finally:
+ target.unlock()
+
+ """
+ # This is very similar to bzrlib.decorators.needs_write_lock. Perhaps they
+ # should share code?
+ target.lock_write()
+ try:
+ result = callable(*args, **kwargs)
+ except:
+ exc_info = sys.exc_info()
+ try:
+ target.unlock()
+ finally:
+ raise exc_info[0], exc_info[1], exc_info[2]
+ else:
+ target.unlock()
+ return result
=== modified file 'bzrlib/config.py'
--- a/bzrlib/config.py 2008-09-08 12:59:00 +0000
+++ b/bzrlib/config.py 2008-10-16 18:30:32 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2005, 2007 Canonical Ltd
+# Copyright (C) 2005, 2007, 2008 Canonical Ltd
# Authors: Robert Collins <robert.collins at canonical.com>
# and others
#
@@ -1064,6 +1064,47 @@
return credentials
+ def set_credentials(self, name, host, user, scheme=None, password=None,
+ port=None, path=None, verify_certificates=None):
+ """Set authentication credentials for a host.
+
+ Any existing credentials with matching scheme, host, port and path
+ will be deleted, regardless of name.
+
+ :param name: An arbitrary name to describe this set of credentials.
+ :param host: Name of the host that accepts these credentials.
+ :param user: The username portion of these credentials.
+ :param scheme: The URL scheme (e.g. ssh, http) the credentials apply
+ to.
+ :param password: Password portion of these credentials.
+ :param port: The IP port on the host that these credentials apply to.
+ :param path: A filesystem path on the host that these credentials
+ apply to.
+ :param verify_certificates: On https, verify server certificates if
+ True.
+ """
+ values = {'host': host, 'user': user}
+ if password is not None:
+ values['password'] = password
+ if scheme is not None:
+ values['scheme'] = scheme
+ if port is not None:
+ values['port'] = '%d' % port
+ if path is not None:
+ values['path'] = path
+ if verify_certificates is not None:
+ values['verify_certificates'] = str(verify_certificates)
+ config = self._get_config()
+ for_deletion = []
+ for section, existing_values in config.items():
+ for key in ('scheme', 'host', 'port', 'path'):
+ if existing_values.get(key) != values.get(key):
+ break
+ else:
+ del config[section]
+ config.update({name: values})
+ self._save()
+
def get_user(self, scheme, host, port=None,
realm=None, path=None, prompt=None):
"""Get a user from authentication file.
=== modified file 'bzrlib/patches.py'
--- a/bzrlib/patches.py 2008-09-08 12:59:00 +0000
+++ b/bzrlib/patches.py 2008-10-16 19:04:48 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2004 - 2006 Aaron Bentley, Canonical Ltd
+# Copyright (C) 2004 - 2006, 2008 Aaron Bentley, Canonical Ltd
# <aaron.bentley at utoronto.ca>
#
# This program is free software; you can redistribute it and/or modify
@@ -393,13 +393,23 @@
"""Iterate through a series of lines with a patch applied.
This handles a single file, and does exact, not fuzzy patching.
"""
- if orig_lines is not None:
- orig_lines = orig_lines.__iter__()
+ patch_lines = iter_lines_handle_nl(iter(patch_lines))
+ get_patch_names(patch_lines)
+ return iter_patched_from_hunks(orig_lines, iter_hunks(patch_lines))
+
+
+def iter_patched_from_hunks(orig_lines, hunks):
+ """Iterate through a series of lines with a patch applied.
+ This handles a single file, and does exact, not fuzzy patching.
+
+ :param orig_lines: The unpatched lines.
+ :param hunks: An iterable of Hunk instances.
+ """
seen_patch = []
- patch_lines = iter_lines_handle_nl(patch_lines.__iter__())
- get_patch_names(patch_lines)
line_no = 1
- for hunk in iter_hunks(patch_lines):
+ if orig_lines is not None:
+ orig_lines = iter(orig_lines)
+ for hunk in hunks:
while line_no < hunk.orig_pos:
orig_line = orig_lines.next()
yield orig_line
=== modified file 'bzrlib/plugins/launchpad/account.py'
--- a/bzrlib/plugins/launchpad/account.py 2007-11-12 21:23:07 +0000
+++ b/bzrlib/plugins/launchpad/account.py 2008-10-17 12:22:34 +0000
@@ -20,8 +20,8 @@
than once for each place that needs to take it into account.
"""
-from bzrlib import errors
-from bzrlib.config import GlobalConfig
+from bzrlib import errors, trace
+from bzrlib.config import AuthenticationConfig, GlobalConfig
from bzrlib.transport import get_transport
@@ -36,20 +36,56 @@
_fmt = "The user %(user)s has not registered any SSH keys with Launchpad."
+class MismatchedUsernames(errors.BzrError):
+
+ _fmt = ('bazaar.conf and authentication.conf disagree about launchpad'
+ ' account name. Please re-run launchpad-login.')
+
+
def get_lp_login(_config=None):
- """Return the user's Launchpad username"""
- if _config is None:
- _config = GlobalConfig()
-
- return _config.get_user_option('launchpad_username')
+ """Return the user's Launchpad username.
+
+ :raises: MismatchedUsername if authentication.conf and bazaar.conf
+ disagree about username.
+ """
+ if _config is None:
+ _config = GlobalConfig()
+
+ username = _config.get_user_option('launchpad_username')
+ if username is not None:
+ auth = AuthenticationConfig()
+ auth_username = _get_auth_user(auth)
+ # Auto-upgrading
+ if auth_username is None:
+ trace.note('Setting ssh/sftp username for bazaar.launchpad.net.')
+ _set_auth_user(username, auth)
+ elif auth_username != username:
+ raise MismatchedUsernames()
+ return username
+
+
+def _set_global_option(username, _config=None):
+ if _config is None:
+ _config = GlobalConfig()
+ _config.set_user_option('launchpad_username', username)
def set_lp_login(username, _config=None):
"""Set the user's Launchpad username"""
- if _config is None:
- _config = GlobalConfig()
-
- _config.set_user_option('launchpad_username', username)
+ _set_global_option(username, _config)
+ _set_auth_user(username)
+
+
+def _get_auth_user(auth=None):
+ if auth is None:
+ auth = AuthenticationConfig()
+ return auth.get_user('ssh', 'bazaar.launchpad.net')
+
+def _set_auth_user(username, auth=None):
+ if auth is None:
+ auth = AuthenticationConfig()
+ auth.set_credentials(
+ 'Launchpad', 'bazaar.launchpad.net', username, 'ssh')
def check_lp_login(username, _transport=None):
=== modified file 'bzrlib/plugins/launchpad/test_account.py'
--- a/bzrlib/plugins/launchpad/test_account.py 2007-10-18 08:58:19 +0000
+++ b/bzrlib/plugins/launchpad/test_account.py 2008-10-17 12:22:34 +0000
@@ -63,6 +63,38 @@
self.assertEqualDiff('The user test-user has not registered any '
'SSH keys with Launchpad.', str(error))
+ def test_set_lp_login_updates_authentication_conf(self):
+ self.assertIs(None, account._get_auth_user())
+ account.set_lp_login('foo')
+ self.assertEqual('foo', account._get_auth_user())
+
+ def test_get_lp_login_does_not_update_for_none_user(self):
+ account.get_lp_login()
+ self.assertIs(None, account._get_auth_user())
+
+ def test_get_lp_login_updates_authentication_conf(self):
+ account._set_global_option('foo')
+ self.assertIs(None, account._get_auth_user())
+ account.get_lp_login()
+ self.assertEqual('foo', account._get_auth_user())
+
+ def test_get_lp_login_leaves_existing_credentials(self):
+ auth = config.AuthenticationConfig()
+ auth.set_credentials('Foo', 'bazaar.launchpad.net', 'foo', 'ssh')
+ account._set_global_option('foo')
+ account.get_lp_login()
+ auth = config.AuthenticationConfig()
+ credentials = auth.get_credentials('ssh', 'bazaar.launchpad.net')
+ self.assertEqual('Foo', credentials['name'])
+
+ def test_get_lp_login_errors_on_mismatch(self):
+ account._set_auth_user('foo')
+ account._set_global_option('bar')
+ e = self.assertRaises(account.MismatchedUsernames,
+ account.get_lp_login)
+ self.assertEqual('bazaar.conf and authentication.conf disagree about'
+ ' launchpad account name. Please re-run launchpad-login.', str(e))
+
class CheckAccountTests(TestCaseWithMemoryTransport):
=== modified file 'bzrlib/plugins/launchpad/test_lp_directory.py'
--- a/bzrlib/plugins/launchpad/test_lp_directory.py 2008-03-06 21:16:38 +0000
+++ b/bzrlib/plugins/launchpad/test_lp_directory.py 2008-10-17 12:22:34 +0000
@@ -23,7 +23,11 @@
)
from bzrlib.branch import Branch
from bzrlib.directory_service import directories
-from bzrlib.tests import TestCase, TestCaseWithMemoryTransport
+from bzrlib.tests import (
+ TestCase,
+ TestCaseInTempDir,
+ TestCaseWithMemoryTransport
+)
from bzrlib.transport import get_transport
from bzrlib.plugins.launchpad import _register_directory
from bzrlib.plugins.launchpad.lp_directory import (
@@ -46,7 +50,7 @@
return self._result
-class DirectoryUrlTests(TestCase):
+class DirectoryUrlTests(TestCaseInTempDir):
"""Tests for branch urls through Launchpad.net directory"""
def test_short_form(self):
=== modified file 'bzrlib/tests/test_branch.py'
--- a/bzrlib/tests/test_branch.py 2008-07-22 19:48:40 +0000
+++ b/bzrlib/tests/test_branch.py 2008-10-07 11:54:11 +0000
@@ -41,6 +41,7 @@
BzrBranchFormat5,
BzrBranchFormat6,
PullResult,
+ _run_with_write_locked_target,
)
from bzrlib.bzrdir import (BzrDirMetaFormat1, BzrDirMeta1,
BzrDir, BzrDirFormat)
@@ -438,3 +439,70 @@
# it's still supported
a = "%d revisions pulled" % r
self.assertEqual(a, "10 revisions pulled")
+
+
+
+class _StubLockable(object):
+ """Helper for TestRunWithWriteLockedTarget."""
+
+ def __init__(self, calls, unlock_exc=None):
+ self.calls = calls
+ self.unlock_exc = unlock_exc
+
+ def lock_write(self):
+ self.calls.append('lock_write')
+
+ def unlock(self):
+ self.calls.append('unlock')
+ if self.unlock_exc is not None:
+ raise self.unlock_exc
+
+
+class _ErrorFromCallable(Exception):
+ """Helper for TestRunWithWriteLockedTarget."""
+
+
+class _ErrorFromUnlock(Exception):
+ """Helper for TestRunWithWriteLockedTarget."""
+
+
+class TestRunWithWriteLockedTarget(TestCase):
+ """Tests for _run_with_write_locked_target."""
+
+ def setUp(self):
+ self._calls = []
+
+ def func_that_returns_ok(self):
+ self._calls.append('func called')
+ return 'ok'
+
+ def func_that_raises(self):
+ self._calls.append('func called')
+ raise _ErrorFromCallable()
+
+ def test_success_unlocks(self):
+ lockable = _StubLockable(self._calls)
+ result = _run_with_write_locked_target(
+ lockable, self.func_that_returns_ok)
+ self.assertEqual('ok', result)
+ self.assertEqual(['lock_write', 'func called', 'unlock'], self._calls)
+
+ def test_exception_unlocks_and_propagates(self):
+ lockable = _StubLockable(self._calls)
+ self.assertRaises(_ErrorFromCallable,
+ _run_with_write_locked_target, lockable, self.func_that_raises)
+ self.assertEqual(['lock_write', 'func called', 'unlock'], self._calls)
+
+ def test_callable_succeeds_but_error_during_unlock(self):
+ lockable = _StubLockable(self._calls, unlock_exc=_ErrorFromUnlock())
+ self.assertRaises(_ErrorFromUnlock,
+ _run_with_write_locked_target, lockable, self.func_that_returns_ok)
+ self.assertEqual(['lock_write', 'func called', 'unlock'], self._calls)
+
+ def test_error_during_unlock_does_not_mask_original_error(self):
+ lockable = _StubLockable(self._calls, unlock_exc=_ErrorFromUnlock())
+ self.assertRaises(_ErrorFromCallable,
+ _run_with_write_locked_target, lockable, self.func_that_raises)
+ self.assertEqual(['lock_write', 'func called', 'unlock'], self._calls)
+
+
=== modified file 'bzrlib/tests/test_config.py'
--- a/bzrlib/tests/test_config.py 2008-08-10 11:26:50 +0000
+++ b/bzrlib/tests/test_config.py 2008-10-16 18:30:32 +0000
@@ -1,4 +1,4 @@
-# Copyright (C) 2005, 2006 Canonical Ltd
+# Copyright (C) 2005, 2006, 2008 Canonical Ltd
# Authors: Robert Collins <robert.collins at canonical.com>
#
# This program is free software; you can redistribute it and/or modify
@@ -1412,6 +1412,32 @@
self.assertEquals(True, credentials.get('verify_certificates'))
+class TestAuthenticationStorage(tests.TestCaseInTempDir):
+
+ def test_set_credentials(self):
+ conf = config.AuthenticationConfig()
+ conf.set_credentials('name', 'host', 'user', 'scheme', 'password',
+ 99, path='/foo', verify_certificates=False)
+ credentials = conf.get_credentials(host='host', scheme='scheme',
+ port=99, path='/foo')
+ CREDENTIALS = {'name': 'name', 'user': 'user', 'password': 'password',
+ 'verify_certificates': False,}
+ self.assertEqual(CREDENTIALS, credentials)
+ credentials_from_disk = config.AuthenticationConfig().get_credentials(
+ host='host', scheme='scheme', port=99, path='/foo')
+ self.assertEqual(CREDENTIALS, credentials_from_disk)
+
+ def test_reset_credentials_different_name(self):
+ conf = config.AuthenticationConfig()
+ conf.set_credentials('name', 'host', 'user', 'scheme', 'password'),
+ conf.set_credentials('name2', 'host', 'user2', 'scheme', 'password'),
+ self.assertIs(None, conf._get_config().get('name'))
+ credentials = conf.get_credentials(host='host', scheme='scheme')
+ CREDENTIALS = {'name': 'name2', 'user': 'user2', 'password':
+ 'password', 'verify_certificates': True}
+ self.assertEqual(CREDENTIALS, credentials)
+
+
class TestAuthenticationConfig(tests.TestCase):
"""Test AuthenticationConfig behaviour"""
=== modified file 'bzrlib/tests/test_patches.py'
--- a/bzrlib/tests/test_patches.py 2008-05-08 04:18:41 +0000
+++ b/bzrlib/tests/test_patches.py 2008-10-14 03:01:36 +0000
@@ -31,6 +31,7 @@
get_patch_names,
hunk_from_header,
iter_patched,
+ iter_patched_from_hunks,
parse_line,
parse_patch,
parse_patches)
@@ -187,6 +188,28 @@
count += 1
self.assertEqual(count, len(mod_lines))
+ def test_iter_patched_from_hunks(self):
+ """Test a few patch files, and make sure they work."""
+ files = [
+ ('diff-2', 'orig-2', 'mod-2'),
+ ('diff-3', 'orig-3', 'mod-3'),
+ ('diff-4', 'orig-4', 'mod-4'),
+ ('diff-5', 'orig-5', 'mod-5'),
+ ('diff-6', 'orig-6', 'mod-6'),
+ ]
+ for diff, orig, mod in files:
+ parsed = parse_patch(self.datafile(diff))
+ orig_lines = list(self.datafile(orig))
+ mod_lines = list(self.datafile(mod))
+ iter_patched = iter_patched_from_hunks(orig_lines, parsed.hunks)
+ patched_file = IterableFile(iter_patched)
+ lines = []
+ count = 0
+ for patch_line in patched_file:
+ self.assertEqual(patch_line, mod_lines[count])
+ count += 1
+ self.assertEqual(count, len(mod_lines))
+
def testFirstLineRenumber(self):
"""Make sure we handle lines at the beginning of the hunk"""
patch = parse_patch(self.datafile("insert_top.patch"))
=== modified file 'bzrlib/tests/test_remote.py'
--- a/bzrlib/tests/test_remote.py 2008-09-17 04:33:24 +0000
+++ b/bzrlib/tests/test_remote.py 2008-10-15 18:45:28 +0000
@@ -27,6 +27,7 @@
from cStringIO import StringIO
from bzrlib import (
+ config,
errors,
graph,
pack,
@@ -49,7 +50,11 @@
from bzrlib.symbol_versioning import one_four
from bzrlib.transport import get_transport, http
from bzrlib.transport.memory import MemoryTransport
-from bzrlib.transport.remote import RemoteTransport, RemoteTCPTransport
+from bzrlib.transport.remote import (
+ RemoteTransport,
+ RemoteSSHTransport,
+ RemoteTCPTransport,
+)
class BasicRemoteObjectTests(tests.TestCaseWithTransport):
@@ -1014,6 +1019,22 @@
client._calls)
+class TestRemoteSSHTransportAuthentication(tests.TestCaseInTempDir):
+
+ def test_defaults_to_none(self):
+ t = RemoteSSHTransport('bzr+ssh://example.com')
+ self.assertIs(None, t._get_credentials()[0])
+
+ def test_uses_authentication_config(self):
+ conf = config.AuthenticationConfig()
+ conf._get_config().update(
+ {'bzr+sshtest': {'scheme': 'ssh', 'user': 'bar', 'host':
+ 'example.com'}})
+ conf._save()
+ t = RemoteSSHTransport('bzr+ssh://example.com')
+ self.assertEqual('bar', t._get_credentials()[0])
+
+
class TestRemoteRepository(tests.TestCase):
"""Base for testing RemoteRepository protocol usage.
=== modified file 'bzrlib/tests/test_sftp_transport.py'
--- a/bzrlib/tests/test_sftp_transport.py 2008-09-26 15:34:03 +0000
+++ b/bzrlib/tests/test_sftp_transport.py 2008-10-15 18:59:07 +0000
@@ -29,6 +29,7 @@
from bzrlib import (
bzrdir,
+ config,
errors,
tests,
transport as _mod_transport,
@@ -483,3 +484,27 @@
self.checkGetRequests([(0, 32768), (32768, 32768), (65536, 464)],
[(0, 40000), (40000, 100), (40100, 1900),
(42000, 24000)])
+
+
+class TestUsesAuthConfig(TestCaseWithSFTPServer):
+ """Test that AuthenticationConfig can supply default usernames."""
+
+ def get_transport_for_connection(self, set_config):
+ port = self.get_server()._listener.port
+ if set_config:
+ conf = config.AuthenticationConfig()
+ conf._get_config().update(
+ {'sftptest': {'scheme': 'ssh', 'port': port, 'user': 'bar'}})
+ conf._save()
+ t = get_transport('sftp://localhost:%d' % port)
+ # force a connection to be performed.
+ t.has('foo')
+ return t
+
+ def test_sftp_uses_config(self):
+ t = self.get_transport_for_connection(set_config=True)
+ self.assertEqual('bar', t._get_credentials()[0])
+
+ def test_sftp_is_none_if_no_config(self):
+ t = self.get_transport_for_connection(set_config=False)
+ self.assertIs(None, t._get_credentials()[0])
=== modified file 'bzrlib/tests/test_transform.py'
--- a/bzrlib/tests/test_transform.py 2008-10-10 11:55:03 +0000
+++ b/bzrlib/tests/test_transform.py 2008-10-13 15:09:16 +0000
@@ -2013,6 +2013,13 @@
resolve_conflicts(tt)
+A_ENTRY = ('a-id', ('a', 'a'), True, (True, True),
+ ('TREE_ROOT', 'TREE_ROOT'), ('a', 'a'), ('file', 'file'),
+ (False, False))
+ROOT_ENTRY = ('TREE_ROOT', ('', ''), False, (True, True), (None, None),
+ ('', ''), ('directory', 'directory'), (False, None))
+
+
class TestTransformPreview(tests.TestCaseWithTransport):
def create_tree(self):
@@ -2090,23 +2097,25 @@
(False, False))],
list(preview_tree.iter_changes(revision_tree)))
- def test_include_unchanged_value_error(self):
+ def test_include_unchanged_succeeds(self):
revision_tree, preview_tree = self.get_tree_and_preview_tree()
- e = self.assertRaises(ValueError, preview_tree.iter_changes,
- revision_tree, include_unchanged=True)
- self.assertEqual('include_unchanged is not supported', str(e))
+ changes = preview_tree.iter_changes(revision_tree,
+ include_unchanged=True)
+ root = revision_tree.inventory.root.file_id
+
+ self.assertEqual([ROOT_ENTRY, A_ENTRY], list(changes))
def test_specific_files(self):
revision_tree, preview_tree = self.get_tree_and_preview_tree()
- e = self.assertRaises(ValueError, preview_tree.iter_changes,
- revision_tree, specific_files=['pete'])
- self.assertEqual('specific_files is not supported', str(e))
+ changes = preview_tree.iter_changes(revision_tree,
+ specific_files=[''])
+ self.assertEqual([ROOT_ENTRY, A_ENTRY], list(changes))
- def test_want_unversioned_value_error(self):
+ def test_want_unversioned(self):
revision_tree, preview_tree = self.get_tree_and_preview_tree()
- e = self.assertRaises(ValueError, preview_tree.iter_changes,
- revision_tree, want_unversioned=True)
- self.assertEqual('want_unversioned is not supported', str(e))
+ changes = preview_tree.iter_changes(revision_tree,
+ want_unversioned=True)
+ self.assertEqual([ROOT_ENTRY, A_ENTRY], list(changes))
def test_ignore_extra_trees_no_specific_files(self):
# extra_trees is harmless without specific_files, so we'll silently
=== modified file 'bzrlib/transform.py'
--- a/bzrlib/transform.py 2008-10-14 02:34:56 +0000
+++ b/bzrlib/transform.py 2008-10-14 02:50:56 +0000
@@ -1753,11 +1753,11 @@
require_versioned=True, want_unversioned=False):
"""See InterTree.iter_changes.
- This implementation does not support include_unchanged, specific_files,
- or want_unversioned. extra_trees, require_versioned, and pb are
- ignored.
+ This has a fast path that is only used when the from_tree matches
+ the transform tree, and no fancy options are supplied.
"""
- if from_tree is not self._transform._tree:
+ if (from_tree is not self._transform._tree or include_unchanged or
+ specific_files or want_unversioned):
return tree.InterTree(from_tree, self).iter_changes(
include_unchanged=include_unchanged,
specific_files=specific_files,
@@ -1765,10 +1765,6 @@
extra_trees=extra_trees,
require_versioned=require_versioned,
want_unversioned=want_unversioned)
- if include_unchanged:
- raise ValueError('include_unchanged is not supported')
- if specific_files is not None:
- raise ValueError('specific_files is not supported')
if want_unversioned:
raise ValueError('want_unversioned is not supported')
return self._transform.iter_changes()
=== modified file 'bzrlib/transport/ftp/__init__.py'
--- a/bzrlib/transport/ftp/__init__.py 2008-08-28 15:01:41 +0000
+++ b/bzrlib/transport/ftp/__init__.py 2008-10-15 15:51:50 +0000
@@ -116,9 +116,10 @@
:return: The created connection and its associated credentials.
- The credentials are only the password as it may have been entered
- interactively by the user and may be different from the one provided
- in base url at transport creation time.
+ The input credentials are only the password as it may have been
+ entered interactively by the user and may be different from the one
+ provided in base url at transport creation time. The returned
+ credentials are username, password.
"""
if credentials is None:
user, password = self._user, self._password
=== modified file 'bzrlib/transport/remote.py'
--- a/bzrlib/transport/remote.py 2008-09-25 16:03:22 +0000
+++ b/bzrlib/transport/remote.py 2008-10-15 18:45:28 +0000
@@ -512,15 +512,16 @@
"""
def _build_medium(self):
- # ssh will prompt the user for a password if needed and if none is
- # provided but it will not give it back, so no credentials can be
- # stored.
location_config = config.LocationConfig(self.base)
bzr_remote_path = location_config.get_bzr_remote_path()
+ user = self._user
+ if user is None:
+ auth = config.AuthenticationConfig()
+ user = auth.get_user('ssh', self._host, self._port)
client_medium = medium.SmartSSHClientMedium(self._host, self._port,
- self._user, self._password, self.base,
+ user, self._password, self.base,
bzr_remote_path=bzr_remote_path)
- return client_medium, None
+ return client_medium, (user, self._password)
class RemoteHTTPTransport(RemoteTransport):
=== modified file 'bzrlib/transport/sftp.py'
--- a/bzrlib/transport/sftp.py 2008-09-10 17:33:01 +0000
+++ b/bzrlib/transport/sftp.py 2008-10-15 18:59:07 +0000
@@ -39,6 +39,7 @@
import warnings
from bzrlib import (
+ config,
errors,
urlutils,
)
@@ -375,9 +376,13 @@
password = credentials
vendor = ssh._get_ssh_vendor()
+ user = self._user
+ if user is None:
+ auth = config.AuthenticationConfig()
+ user = auth.get_user('ssh', self._host, self._port)
connection = vendor.connect_sftp(self._user, password,
self._host, self._port)
- return connection, password
+ return connection, (user, password)
def _get_sftp(self):
"""Ensures that a connection is established"""
=== modified file 'bzrlib/transport/ssh.py'
--- a/bzrlib/transport/ssh.py 2008-04-24 07:22:53 +0000
+++ b/bzrlib/transport/ssh.py 2008-10-15 19:11:56 +0000
@@ -458,18 +458,10 @@
def _paramiko_auth(username, password, host, port, paramiko_transport):
- # paramiko requires a username, but it might be none if nothing was supplied
- # use the local username, just in case.
- # We don't override username, because if we aren't using paramiko,
- # the username might be specified in ~/.ssh/config and we don't want to
- # force it to something else
- # Also, it would mess up the self.relpath() functionality
- auth = config.AuthenticationConfig()
+ # paramiko requires a username, but it might be none if nothing was
+ # supplied. If so, use the local username.
if username is None:
- username = auth.get_user('ssh', host, port=port)
- if username is None:
- # Default to local user
- username = getpass.getuser()
+ username = getpass.getuser()
if _use_ssh_agent:
agent = paramiko.Agent()
@@ -496,6 +488,7 @@
pass
# give up and ask for a password
+ auth = config.AuthenticationConfig()
password = auth.get_password('ssh', host, username, port=port)
try:
paramiko_transport.auth_password(username, password)
=== modified file 'doc/developers/HACKING.txt'
--- a/doc/developers/HACKING.txt 2008-09-04 04:55:36 +0000
+++ b/doc/developers/HACKING.txt 2008-10-16 12:11:45 +0000
@@ -224,9 +224,9 @@
You can generate a merge request like this::
- bzr send -o bug-1234.diff
+ bzr send -o bug-1234.patch
-A ``.diff`` extension is recommended instead of .bundle as many mail clients
+A ``.patch`` extension is recommended instead of .bundle as many mail clients
will send the latter as a binary file.
``bzr send`` can also send mail directly if you prefer; see the help.
=== modified file 'setup.py'
--- a/setup.py 2008-10-10 19:41:44 +0000
+++ b/setup.py 2008-10-16 03:58:42 +0000
@@ -224,7 +224,7 @@
unavailable_files = []
-def add_pyrex_extension(module_name, **kwargs):
+def add_pyrex_extension(module_name, libraries=None):
"""Add a pyrex module to build.
This will use Pyrex to auto-generate the .c file if it is available.
@@ -240,26 +240,29 @@
path = module_name.replace('.', '/')
pyrex_name = path + '.pyx'
c_name = path + '.c'
+ define_macros = []
+ if sys.platform == 'win32':
+ # pyrex uses the macro WIN32 to detect the platform, even though it should
+ # be using something like _WIN32 or MS_WINDOWS, oh well, we can give it the
+ # right value.
+ define_macros.append(('WIN32', None))
if have_pyrex:
- ext_modules.append(Extension(module_name, [pyrex_name], **kwargs))
+ ext_modules.append(Extension(module_name, [pyrex_name],
+ define_macros=define_macros, libraries=libraries))
else:
if not os.path.isfile(c_name):
unavailable_files.append(c_name)
else:
- ext_modules.append(Extension(module_name, [c_name], **kwargs))
+ ext_modules.append(Extension(module_name, [c_name],
+ define_macros=define_macros, libraries=libraries))
add_pyrex_extension('bzrlib._btree_serializer_c')
add_pyrex_extension('bzrlib._knit_load_data_c')
if sys.platform == 'win32':
add_pyrex_extension('bzrlib._dirstate_helpers_c',
- libraries=['Ws2_32']
- )
- # pyrex uses the macro WIN32 to detect the platform, even though it should
- # be using something like _WIN32 or MS_WINDOWS, oh well, we can give it the
- # right value.
- add_pyrex_extension('bzrlib._walkdirs_win32',
- define_macros=[('WIN32', None)])
+ libraries=['Ws2_32'])
+ add_pyrex_extension('bzrlib._walkdirs_win32')
else:
if have_pyrex and pyrex_version == '0.9.4.1':
# Pyrex 0.9.4.1 fails to compile this extension correctly
More information about the bazaar-commits
mailing list