Rev 3122: merge fix for bug #177643 in file:///v/home/vila/src/bzr/bugs/175524/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Thu Dec 20 16:36:52 GMT 2007
At file:///v/home/vila/src/bzr/bugs/175524/
------------------------------------------------------------
revno: 3122
revision-id:v.ladeuil+lp at free.fr-20071220163644-nh05tvd3jfsfz2y0
parent: v.ladeuil+lp at free.fr-20071220091804-8by0r5bwsw3qfg1q
parent: v.ladeuil+lp at free.fr-20071220142933-xf5h8kd1885f8nz6
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 175524
timestamp: Thu 2007-12-20 17:36:44 +0100
message:
merge fix for bug #177643
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
bzrlib/transport/http/_urllib.py _urlgrabber.py-20060113083826-0bbf7d992fbf090c
bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
------------------------------------------------------------
revno: 3111.1.25
revision-id:v.ladeuil+lp at free.fr-20071220142933-xf5h8kd1885f8nz6
parent: v.ladeuil+lp at free.fr-20071220141421-1m9i2monq5d9zgno
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 177643
timestamp: Thu 2007-12-20 15:29:33 +0100
message:
Fix typo (hi John ;).
modified:
bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
------------------------------------------------------------
revno: 3111.1.24
revision-id:v.ladeuil+lp at free.fr-20071220141421-1m9i2monq5d9zgno
parent: v.ladeuil+lp at free.fr-20071220120730-o0nbkwl4a4o70ecs
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 177643
timestamp: Thu 2007-12-20 15:14:21 +0100
message:
Fix #177643 by making pycurl handle url-embedded credentials again.
* bzrlib/tests/test_http.py:
Define proper tests for pycurl instead of replacing the urllib
ones (a correct refactoring is already under work elsewhere). Add
KnownFailures to document limitations in the pycurl
implementation (cant prompt for password, no support for
authentication.conf, cant handle a nonce change for digest auth).
(TestAuth.test_no_prompt_for_password_when_using_auth_config): Fix
typo.
* bzrlib/transport/http/__init__.py:
(HttpTransportBase._remote_path): Don't mention user and passwords
in urls since bothe implementations handle credentials separately.
(HttpTransportBase._create_auth): Share default credentials
creation between both implementation.
* bzrlib/transport/http/_pycurl.py:
(PyCurlTransport._get_curl): Save user provided credentials.
(PyCurlTransport._set_curl_options): Set USERPWD explicitely from
credentials if any have been provided in the url.
* bzrlib/transport/http/_urllib.py:
(HttpTransport_urllib._remote_path): Deleted, pushed to base class.
(HttpTransport_urllib._perform): Simplified.
* bzrlib/transport/http/_urllib2_wrappers.py:
(AbstractAuthHandler._build_password_prompt): Fix typo.
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
bzrlib/transport/http/_urllib.py _urlgrabber.py-20060113083826-0bbf7d992fbf090c
bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
------------------------------------------------------------
revno: 3111.1.23
revision-id:v.ladeuil+lp at free.fr-20071220120730-o0nbkwl4a4o70ecs
parent: pqm at pqm.ubuntu.com-20071220042019-wsij5vgvhgw4qhdt
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: 177643
timestamp: Thu 2007-12-20 13:07:30 +0100
message:
Reproduce bug #177643.
* bzrlib/tests/test_http.py:
Switch the tests against pycurl instead of urllib.
modified:
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
------------------------------------------------------------
revno: 3111.1.22
revision-id:pqm at pqm.ubuntu.com-20071220042019-wsij5vgvhgw4qhdt
parent: pqm at pqm.ubuntu.com-20071220032735-fldmkfcg632g4uez
parent: aaron.bentley at utoronto.ca-20071220024739-nyw87k23467u4q31
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2007-12-20 04:20:19 +0000
message:
Annotate merge can do cherrypicks (abentley)
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
------------------------------------------------------------
revno: 3062.1.12.1.13
revision-id:aaron.bentley at utoronto.ca-20071220024739-nyw87k23467u4q31
parent: aaron.bentley at utoronto.ca-20071220012542-x0y3073oc4rzw0m4
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Wed 2007-12-19 21:47:39 -0500
message:
Update prepare_cherrypick docstring
modified:
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
------------------------------------------------------------
revno: 3062.1.12.1.12
revision-id:aaron.bentley at utoronto.ca-20071220012542-x0y3073oc4rzw0m4
parent: aaron.bentley at utoronto.ca-20071220005646-cfebcxoxqtpsk3uo
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Wed 2007-12-19 20:25:42 -0500
message:
Switch to using PatienceSequenceMatcher, now that C version allows tuples
modified:
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
------------------------------------------------------------
revno: 3062.1.12.1.11
revision-id:aaron.bentley at utoronto.ca-20071220005646-cfebcxoxqtpsk3uo
parent: aaron.bentley at utoronto.ca-20071210000206-r4u7wa4ox1xpnwm8
parent: pqm at pqm.ubuntu.com-20071219234039-462zdjboqfg4lcr1
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Wed 2007-12-19 19:56:46 -0500
message:
Merge bzr.dev
removed:
doc/en/user-reference/index.txt index.txt-20070830033353-ud9e03xsh24053oo-1
added:
bzrlib/help_topics/ help_topics-20071211013603-qz0sojhgxhiujm6a-1
bzrlib/help_topics/en/ bzrlibhelp-20071209214431-xzg3moksichjwyts-1
bzrlib/version_info_formats/format_custom.py format_custom.py-20071029100350-ajovqhbpb5khf6gu-1
doc/en/user-guide/adv_merging.txt adv_merging.txt-20071213070245-d7u7150lb2hhnvby-1
doc/en/user-reference/readme.txt readme.txt-20071211133352-guencaey6fpesv4j-1
index.txt index.txt-20071121073725-0corxykv5irjal00-1
renamed:
bzrlib/help_topics.py => bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
doc/en/user-guide/authentication_conf.txt => bzrlib/help_topics/en/authentication.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
doc/en/user-guide/configuration.txt => bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
doc/en/user-guide/conflicts.txt => bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
doc/en/user-reference/hooks.txt => bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
modified:
.bzrignore bzrignore-20050311232317-81f7b71efa2db11a
Makefile Makefile-20050805140406-d96e3498bb61c5bb
NEWS NEWS-20050323055033-4e00b5db738777ff
bzr bzr.py-20050313053754-5485f144c7006fa6
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/bugtracker.py bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/cmd_version_info.py __init__.py-20051228204928-697d01fdca29c99b
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
bzrlib/dirstate.py dirstate.py-20060728012006-d6mvoihjb3je9peu-1
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/index.py index.py-20070712131115-lolkarso50vjr64s-1
bzrlib/inventory.py inventory.py-20050309040759-6648b84ca2005b37
bzrlib/lockable_files.py control_files.py-20051111201905-bb88546e799d669f
bzrlib/merge_directive.py merge_directive.py-20070228184838-ja62280spt1g7f4x-1
bzrlib/osutils.py osutils.py-20050309040759-eeaff12fbf77ac86
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/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/revision.py revision.py-20050309040759-e77802c08f3999d5
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/symbol_versioning.py symbol_versioning.py-20060105104851-9ecf8af605d15a80
bzrlib/tests/HttpServer.py httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
bzrlib/tests/TestUtil.py TestUtil.py-20050824080200-5f70140a2d938694
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_bound_branches.py test_bound_branches.py-20051109215527-2373188ad566c205
bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
bzrlib/tests/blackbox/test_diff.py test_diff.py-20060110203741-aa99ac93e633d971
bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/blackbox/test_non_ascii.py test_non_ascii.py-20060105214030-68010be784a5d854
bzrlib/tests/blackbox/test_outside_wt.py test_outside_wt.py-20060116200058-98edd33e7db8bdde
bzrlib/tests/blackbox/test_send.py test_bundle.py-20060616222707-c21c8b7ea5ef57b1
bzrlib/tests/blackbox/test_split.py test_split.py-20061008023421-qy0vdpzysh5rriu8-1
bzrlib/tests/blackbox/test_uncommit.py test_uncommit.py-20051027212835-84944b63adae51be
bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_ancestry.py test_ancestry.py-20050913023709-69768e94848312c6
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
bzrlib/tests/test_errors.py test_errors.py-20060210110251-41aba2deddf936a8
bzrlib/tests/test_extract.py test_extract.py-20061002214140-qdnnm67q1ov6x6pd-1
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_help.py test_help.py-20070419045354-6q6rq15j9e2n5fna-1
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/tests/test_http_response.py test_http_response.py-20060628233143-950b2a482a32505d
bzrlib/tests/test_lockable_files.py test_lockable_files.py-20051225183927-365c7fd99591caf1
bzrlib/tests/test_merge_directive.py test_merge_directive-20070228184838-ja62280spt1g7f4x-2
bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
bzrlib/tests/test_osutils.py test_osutils.py-20051201224856-e48ee24c12182989
bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_revision.py testrevision.py-20050804210559-46f5e1eb67b01289
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/transport/__init__.py transport.py-20050711165921-4978aa7ce1285ad5
bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
bzrlib/transport/http/_urllib.py _urlgrabber.py-20060113083826-0bbf7d992fbf090c
bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
bzrlib/transport/http/response.py _response.py-20060613154423-a2ci7hd4iw5c7fnt-1
bzrlib/version_info_formats/__init__.py generate_version_info.py-20051228204928-8358edabcddcd97e
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
doc/en/mini-tutorial/index.txt index.txt-20070813141352-2u64ooqzo0or4hss-2
doc/en/user-guide/browsing_history.txt browsing_history.txt-20071121073725-0corxykv5irjal00-2
doc/en/user-guide/bug_trackers.txt bug_trackers.txt-20070713223459-khxdlcudraii95uv-1
doc/en/user-guide/configuring_bazaar.txt configuring_bazaar.t-20071128000722-ncxiua259xwbdbg7-1
doc/en/user-guide/core_concepts.txt core_concepts.txt-20071114035000-q36a9h57ps06uvnl-2
doc/en/user-guide/hooks.txt hooks.txt-20070829200551-7nr6e5a1io6x78uf-1
doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
doc/en/user-guide/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
doc/en/user-guide/installing_bazaar.txt installing_bazaar.tx-20071114035000-q36a9h57ps06uvnl-4
doc/en/user-guide/introducing_bazaar.txt introducing_bazaar.t-20071114035000-q36a9h57ps06uvnl-5
doc/en/user-guide/plugins.txt plugins.txt-20060314145616-525099a747f3ffdd
doc/en/user-guide/publishing_a_branch.txt publishing_a_branch.-20071123055134-k5x4ekduci2lbn36-2
doc/en/user-guide/reusing_a_checkout.txt reusing_a_checkout.t-20071123055134-k5x4ekduci2lbn36-3
doc/en/user-guide/sending_changes.txt sending_changes.txt-20071123154453-dk2mjhrg1vpjm5w2-4
doc/en/user-guide/server.txt server.txt-20060913044801-h939fvbwzz39gf7g-1
doc/en/user-guide/setting_up_email.txt setting_up_email.txt-20060314161707-fd242c8944346173
doc/en/user-guide/specifying_revisions.txt specifying_revisions.txt-20060314161707-19deb139101bea33
doc/en/user-guide/version_info.txt version_info.txt-20060921215543-gju6o5xdic8w25np-1
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
tools/doc_generate/autodoc_rstx.py autodoc_rstx.py-20060420024836-3e0d4a526452193c
tools/rst2html.py rst2html.py-20060817120932-gn177u8v0008txhu-1
bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/help_topics/en/authentication.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
------------------------------------------------------------
revno: 3062.1.12.1.10
revision-id:aaron.bentley at utoronto.ca-20071210000206-r4u7wa4ox1xpnwm8
parent: aaron.bentley at utoronto.ca-20071209235350-qp39yk0xzx7a4f6p
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Sun 2007-12-09 19:02:06 -0500
message:
Update NEWS
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3062.1.12.1.9
revision-id:aaron.bentley at utoronto.ca-20071209235350-qp39yk0xzx7a4f6p
parent: aaron.bentley at utoronto.ca-20071209232413-whllotzpnbaj4hrw
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Sun 2007-12-09 18:53:50 -0500
message:
Don't use the base if not cherrypicking
modified:
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
------------------------------------------------------------
revno: 3062.1.12.1.8
revision-id:aaron.bentley at utoronto.ca-20071209232413-whllotzpnbaj4hrw
parent: aaron.bentley at utoronto.ca-20071209225847-742dknf7ywjzv5uo
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Sun 2007-12-09 18:24:13 -0500
message:
Update remerge to use Merger.from_revision_ids
modified:
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
------------------------------------------------------------
revno: 3062.1.12.1.7
revision-id:aaron.bentley at utoronto.ca-20071209225847-742dknf7ywjzv5uo
parent: aaron.bentley at utoronto.ca-20071209205803-9puidarg2y33bpzj
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Sun 2007-12-09 17:58:47 -0500
message:
Prevent reverse cherry-picking with weave
modified:
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
------------------------------------------------------------
revno: 3062.1.12.1.6
revision-id:aaron.bentley at utoronto.ca-20071209205803-9puidarg2y33bpzj
parent: aaron.bentley at utoronto.ca-20071208010058-1vuj9qn49qfu808e
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Sun 2007-12-09 15:58:03 -0500
message:
Get cherrypick-on-weave working
modified:
bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
------------------------------------------------------------
revno: 3062.1.12.1.5
revision-id:aaron.bentley at utoronto.ca-20071208010058-1vuj9qn49qfu808e
parent: aaron.bentley at utoronto.ca-20071208005727-no3rg7qob9eygt86
parent: pqm at pqm.ubuntu.com-20071207083421-7uxzmxup5kpl4w9r
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Fri 2007-12-07 20:00:58 -0500
message:
Merge bzr.dev
added:
doc/en/quick-reference/quick-start-summary.pdf quickstartsummary.pd-20071207005239-it6xmdjml8nxvzgt-1
doc/en/quick-reference/quick-start-summary.png quickstartsummary.pn-20071203142852-hsiybkmh37q5owwe-1
modified:
Makefile Makefile-20050805140406-d96e3498bb61c5bb
NEWS NEWS-20050323055033-4e00b5db738777ff
README README-20050309040720-8f368abf9f346b9d
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/bugtracker.py bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/debug.py debug.py-20061102062349-vdhrw9qdpck8cl35-1
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/help_topics.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/plugins/launchpad/lp_indirect.py lp_indirect.py-20070126012204-de5rugwlt22c7u7e-1
bzrlib/plugins/launchpad/test_lp_indirect.py test_lp_indirect.py-20070126002743-oyle362tzv9cd8mi-1
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/switch.py switch.py-20071116011000-v5lnw7d2wkng9eux-1
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_cat.py test_cat.py-20051201162916-f0937e4e19ea24b3
bzrlib/tests/blackbox/test_exceptions.py test_exceptions.py-20060604211237-yi2cxg0ose3xk4id-1
bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_bugtracker.py test_bugtracker.py-20070410073305-vu1vu1qosjurg8kb-2
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
bzrlib/tests/test_errors.py test_errors.py-20060210110251-41aba2deddf936a8
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
bzrlib/tests/test_switch.py test_switch.py-20071116011000-v5lnw7d2wkng9eux-2
bzrlib/trace.py trace.py-20050309040759-c8ed824bdcd4748a
doc/developers/bundles.txt bundles.txt-20070621030528-qkjnugd7iyud6ow3-1
doc/developers/index.txt index.txt-20070508041241-qznziunkg0nffhiw-1
doc/developers/packrepo.txt knitpack.txt-20071023074744-q0g5u8me8gk5zbtb-1
doc/en/quick-reference/quick-start-summary.svg quickstartsummary.sv-20070813143223-5i7bgw7w8s7l3ae2-3
doc/en/user-guide/bug_trackers.txt bug_trackers.txt-20070713223459-khxdlcudraii95uv-1
doc/en/user-guide/core_concepts.txt core_concepts.txt-20071114035000-q36a9h57ps06uvnl-2
doc/en/user-guide/introducing_bazaar.txt introducing_bazaar.t-20071114035000-q36a9h57ps06uvnl-5
doc/en/user-guide/merging_changes.txt merging_changes.txt-20071122141511-0knao2lklsdsvb1q-3
doc/en/user-guide/resolving_conflicts.txt resolving_conflicts.-20071122141511-0knao2lklsdsvb1q-5
doc/en/user-guide/reusing_a_checkout.txt reusing_a_checkout.t-20071123055134-k5x4ekduci2lbn36-3
doc/en/user-guide/undoing_mistakes.txt undoing_mistakes.txt-20071121092300-8fyacngt1w98e5mp-1
doc/en/user-guide/working_offline_central.txt working_offline_cent-20071123055134-k5x4ekduci2lbn36-5
doc/index.txt index.txt-20070813101924-07gd9i9d2jt124bf-1
------------------------------------------------------------
revno: 3062.1.12.1.4
revision-id:aaron.bentley at utoronto.ca-20071208005727-no3rg7qob9eygt86
parent: aaron.bentley at utoronto.ca-20071204035455-9baojlvaynm0wv5f
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Fri 2007-12-07 19:57:27 -0500
message:
Start supporting merge-with-base
modified:
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
------------------------------------------------------------
revno: 3062.1.12.1.3
revision-id:aaron.bentley at utoronto.ca-20071204035455-9baojlvaynm0wv5f
parent: aaron.bentley at utoronto.ca-20071204033603-equ8y41vfk8vkway
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Mon 2007-12-03 22:54:55 -0500
message:
Sync up with bzr.dev API changes
modified:
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
------------------------------------------------------------
revno: 3062.1.12.1.2
revision-id:aaron.bentley at utoronto.ca-20071204033603-equ8y41vfk8vkway
parent: abentley at panoramicfeedback.com-20071203151536-b34fe60wl3nr9eln
parent: pqm at pqm.ubuntu.com-20071204004243-cgss0sl9yf0ayepc
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: fast-plan-merge2
timestamp: Mon 2007-12-03 22:36:03 -0500
message:
Merge bzr.dev
removed:
index.txt index.txt-20071121073725-0corxykv5irjal00-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
bzrlib/commit.py commit.py-20050511101309-79ec1a0168e0e825
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repofmt/pack_repo.py pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
bzrlib/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/branch_implementations/test_pull.py test_pull.py-20060410103942-83c35b26657414fc
bzrlib/tests/interrepository_implementations/__init__.py __init__.py-20060220054744-baf49a1f88f17b1a
bzrlib/tests/interrepository_implementations/test_interrepository.py test_interrepository.py-20060220061411-1ec13fa99e5e3eee
bzrlib/tests/repository_implementations/test_reconcile.py test_reconcile.py-20060223022332-572ef70a3288e369
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/transport/ssh.py ssh.py-20060824042150-0s9787kng6zv1nwq-1
bzrlib/tree.py tree.py-20050309040759-9d5f2496be663e77
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
------------------------------------------------------------
revno: 3062.1.12.1.1
revision-id:abentley at panoramicfeedback.com-20071203151536-b34fe60wl3nr9eln
parent: aaron.bentley at utoronto.ca-20071203003633-pb9662ni2fwad2g0
committer: Aaron Bentley <abentley at panoramicfeedback.com>
branch nick: fast-plan-merge
timestamp: Mon 2007-12-03 10:15:36 -0500
message:
Add support for plan-merge with a base
modified:
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
------------------------------------------------------------
revno: 3111.1.21
revision-id:pqm at pqm.ubuntu.com-20071220032735-fldmkfcg632g4uez
parent: pqm at pqm.ubuntu.com-20071219234039-462zdjboqfg4lcr1
parent: aaron.bentley at utoronto.ca-20071220001534-hufz1x7smg3l3en6
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2007-12-20 03:27:35 +0000
message:
Warn when merge directives cause cherrypicks (abentley)
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
------------------------------------------------------------
revno: 1551.2.49.1.40.1.22.1.42.1.31.1.39.1.17.1.77.1.3.1.20.1.23
revision-id:aaron.bentley at utoronto.ca-20071220001534-hufz1x7smg3l3en6
parent: aaron.bentley at utoronto.ca-20071215044454-43118sh0ptmkfojx
parent: pqm at pqm.ubuntu.com-20071219234039-462zdjboqfg4lcr1
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: Aaron's mergeable stuff
timestamp: Wed 2007-12-19 19:15:34 -0500
message:
Merge bzr.dev
added:
bzrlib/help_topics/ help_topics-20071211013603-qz0sojhgxhiujm6a-1
bzrlib/help_topics/en/ bzrlibhelp-20071209214431-xzg3moksichjwyts-1
bzrlib/version_info_formats/format_custom.py format_custom.py-20071029100350-ajovqhbpb5khf6gu-1
doc/en/user-reference/readme.txt readme.txt-20071211133352-guencaey6fpesv4j-1
renamed:
bzrlib/help_topics.py => bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
doc/en/user-guide/authentication_conf.txt => bzrlib/help_topics/en/authentication.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
doc/en/user-guide/configuration.txt => bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
doc/en/user-guide/conflicts.txt => bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
doc/en/user-reference/hooks.txt => bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
modified:
.bzrignore bzrignore-20050311232317-81f7b71efa2db11a
Makefile Makefile-20050805140406-d96e3498bb61c5bb
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
bzrlib/bugtracker.py bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/cmd_version_info.py __init__.py-20051228204928-697d01fdca29c99b
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
bzrlib/dirstate.py dirstate.py-20060728012006-d6mvoihjb3je9peu-1
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/index.py index.py-20070712131115-lolkarso50vjr64s-1
bzrlib/inventory.py inventory.py-20050309040759-6648b84ca2005b37
bzrlib/lockable_files.py control_files.py-20051111201905-bb88546e799d669f
bzrlib/osutils.py osutils.py-20050309040759-eeaff12fbf77ac86
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/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/revision.py revision.py-20050309040759-e77802c08f3999d5
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/symbol_versioning.py symbol_versioning.py-20060105104851-9ecf8af605d15a80
bzrlib/tests/TestUtil.py TestUtil.py-20050824080200-5f70140a2d938694
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_diff.py test_diff.py-20060110203741-aa99ac93e633d971
bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/blackbox/test_non_ascii.py test_non_ascii.py-20060105214030-68010be784a5d854
bzrlib/tests/blackbox/test_outside_wt.py test_outside_wt.py-20060116200058-98edd33e7db8bdde
bzrlib/tests/blackbox/test_split.py test_split.py-20061008023421-qy0vdpzysh5rriu8-1
bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_ancestry.py test_ancestry.py-20050913023709-69768e94848312c6
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
bzrlib/tests/test_extract.py test_extract.py-20061002214140-qdnnm67q1ov6x6pd-1
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_help.py test_help.py-20070419045354-6q6rq15j9e2n5fna-1
bzrlib/tests/test_lockable_files.py test_lockable_files.py-20051225183927-365c7fd99591caf1
bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
bzrlib/tests/test_osutils.py test_osutils.py-20051201224856-e48ee24c12182989
bzrlib/tests/test_revision.py testrevision.py-20050804210559-46f5e1eb67b01289
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
bzrlib/version_info_formats/__init__.py generate_version_info.py-20051228204928-8358edabcddcd97e
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
doc/en/user-guide/browsing_history.txt browsing_history.txt-20071121073725-0corxykv5irjal00-2
doc/en/user-guide/configuring_bazaar.txt configuring_bazaar.t-20071128000722-ncxiua259xwbdbg7-1
doc/en/user-guide/hooks.txt hooks.txt-20070829200551-7nr6e5a1io6x78uf-1
doc/en/user-guide/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
doc/en/user-guide/introducing_bazaar.txt introducing_bazaar.t-20071114035000-q36a9h57ps06uvnl-5
doc/en/user-guide/sending_changes.txt sending_changes.txt-20071123154453-dk2mjhrg1vpjm5w2-4
doc/en/user-guide/setting_up_email.txt setting_up_email.txt-20060314161707-fd242c8944346173
doc/en/user-guide/version_info.txt version_info.txt-20060921215543-gju6o5xdic8w25np-1
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
tools/doc_generate/autodoc_rstx.py autodoc_rstx.py-20060420024836-3e0d4a526452193c
bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/help_topics/en/authentication.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
------------------------------------------------------------
revno: 1551.2.49.1.40.1.22.1.42.1.31.1.39.1.17.1.77.1.3.1.20.1.22
revision-id:aaron.bentley at utoronto.ca-20071215044454-43118sh0ptmkfojx
parent: aaron.bentley at utoronto.ca-20071215000134-fq3wi3f9pm1k8hnu
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: Aaron's mergeable stuff
timestamp: Fri 2007-12-14 23:44:54 -0500
message:
Add warning when merge directives cause cherrypicks
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
------------------------------------------------------------
revno: 1551.2.49.1.40.1.22.1.42.1.31.1.39.1.17.1.77.1.3.1.20.1.21
revision-id:aaron.bentley at utoronto.ca-20071215000134-fq3wi3f9pm1k8hnu
parent: aaron.bentley at utoronto.ca-20071214044458-ce124oijzzqwj7a6
parent: pqm at pqm.ubuntu.com-20071214163914-dqiqxlhho36ce54r
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: Aaron's mergeable stuff
timestamp: Fri 2007-12-14 19:01:34 -0500
message:
Merge bzr.dev
removed:
doc/en/user-reference/index.txt index.txt-20070830033353-ud9e03xsh24053oo-1
added:
doc/en/quick-reference/quick-start-summary.pdf quickstartsummary.pd-20071207005239-it6xmdjml8nxvzgt-1
doc/en/user-guide/adv_merging.txt adv_merging.txt-20071213070245-d7u7150lb2hhnvby-1
index.txt index.txt-20071121073725-0corxykv5irjal00-1
modified:
Makefile Makefile-20050805140406-d96e3498bb61c5bb
NEWS NEWS-20050323055033-4e00b5db738777ff
README README-20050309040720-8f368abf9f346b9d
bzr bzr.py-20050313053754-5485f144c7006fa6
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/bugtracker.py bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/help_topics.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/reconfigure.py reconfigure.py-20070908040425-6ykgo7escxhyrg9p-1
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/repofmt/pack_repo.py pack_repo.py-20070813041115-gjv5ma7ktfqwsjgn-1
bzrlib/switch.py switch.py-20071116011000-v5lnw7d2wkng9eux-1
bzrlib/tests/HttpServer.py httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
bzrlib/tests/blackbox/test_bound_branches.py test_bound_branches.py-20051109215527-2373188ad566c205
bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
bzrlib/tests/blackbox/test_exceptions.py test_exceptions.py-20060604211237-yi2cxg0ose3xk4id-1
bzrlib/tests/blackbox/test_send.py test_bundle.py-20060616222707-c21c8b7ea5ef57b1
bzrlib/tests/blackbox/test_uncommit.py test_uncommit.py-20051027212835-84944b63adae51be
bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
bzrlib/tests/test_errors.py test_errors.py-20060210110251-41aba2deddf936a8
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/tests/test_http_response.py test_http_response.py-20060628233143-950b2a482a32505d
bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_revision.py testrevision.py-20050804210559-46f5e1eb67b01289
bzrlib/tests/test_switch.py test_switch.py-20071116011000-v5lnw7d2wkng9eux-2
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/trace.py trace.py-20050309040759-c8ed824bdcd4748a
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/transport/__init__.py transport.py-20050711165921-4978aa7ce1285ad5
bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
bzrlib/transport/http/_urllib.py _urlgrabber.py-20060113083826-0bbf7d992fbf090c
bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
bzrlib/transport/http/response.py _response.py-20060613154423-a2ci7hd4iw5c7fnt-1
doc/en/mini-tutorial/index.txt index.txt-20070813141352-2u64ooqzo0or4hss-2
doc/en/user-guide/authentication_conf.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
doc/en/user-guide/bug_trackers.txt bug_trackers.txt-20070713223459-khxdlcudraii95uv-1
doc/en/user-guide/configuration.txt configuration.txt-20060314161707-868350809502af01
doc/en/user-guide/core_concepts.txt core_concepts.txt-20071114035000-q36a9h57ps06uvnl-2
doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
doc/en/user-guide/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
doc/en/user-guide/installing_bazaar.txt installing_bazaar.tx-20071114035000-q36a9h57ps06uvnl-4
doc/en/user-guide/plugins.txt plugins.txt-20060314145616-525099a747f3ffdd
doc/en/user-guide/publishing_a_branch.txt publishing_a_branch.-20071123055134-k5x4ekduci2lbn36-2
doc/en/user-guide/reusing_a_checkout.txt reusing_a_checkout.t-20071123055134-k5x4ekduci2lbn36-3
doc/en/user-guide/server.txt server.txt-20060913044801-h939fvbwzz39gf7g-1
doc/en/user-guide/setting_up_email.txt setting_up_email.txt-20060314161707-fd242c8944346173
doc/en/user-guide/specifying_revisions.txt specifying_revisions.txt-20060314161707-19deb139101bea33
doc/en/user-guide/version_info.txt version_info.txt-20060921215543-gju6o5xdic8w25np-1
doc/index.txt index.txt-20070813101924-07gd9i9d2jt124bf-1
tools/doc_generate/autodoc_rstx.py autodoc_rstx.py-20060420024836-3e0d4a526452193c
tools/rst2html.py rst2html.py-20060817120932-gn177u8v0008txhu-1
------------------------------------------------------------
revno: 3111.1.20
revision-id:pqm at pqm.ubuntu.com-20071219234039-462zdjboqfg4lcr1
parent: pqm at pqm.ubuntu.com-20071219211725-mgnpnt2keboqflwi
parent: john at arbash-meinel.com-20071219224427-iovj1ha49yuo2rjf
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2007-12-19 23:40:39 +0000
message:
(jam) allow _patience_diff_c to support any object that supports
hash()
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
------------------------------------------------------------
revno: 3074.2.12
revision-id:john at arbash-meinel.com-20071219224427-iovj1ha49yuo2rjf
parent: john at arbash-meinel.com-20071219223929-l239ac2atqdcapb8
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Wed 2007-12-19 16:44:27 -0600
message:
NEWS
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
------------------------------------------------------------
revno: 3074.2.11
revision-id:john at arbash-meinel.com-20071219223929-l239ac2atqdcapb8
parent: john at arbash-meinel.com-20071219164503-dxzdtrm0i3jet9ea
parent: pqm at pqm.ubuntu.com-20071219091053-81xgp971m1pgmccf
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Wed 2007-12-19 16:39:29 -0600
message:
[merge] bzr.dev 3129
removed:
doc/en/user-reference/index.txt index.txt-20070830033353-ud9e03xsh24053oo-1
added:
bzrlib/help_topics/ help_topics-20071211013603-qz0sojhgxhiujm6a-1
bzrlib/help_topics/en/ bzrlibhelp-20071209214431-xzg3moksichjwyts-1
bzrlib/version_info_formats/format_custom.py format_custom.py-20071029100350-ajovqhbpb5khf6gu-1
doc/en/quick-reference/quick-start-summary.pdf quickstartsummary.pd-20071207005239-it6xmdjml8nxvzgt-1
doc/en/quick-reference/quick-start-summary.png quickstartsummary.pn-20071203142852-hsiybkmh37q5owwe-1
doc/en/user-guide/adv_merging.txt adv_merging.txt-20071213070245-d7u7150lb2hhnvby-1
doc/en/user-reference/readme.txt readme.txt-20071211133352-guencaey6fpesv4j-1
index.txt index.txt-20071121073725-0corxykv5irjal00-1
renamed:
bzrlib/help_topics.py => bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
doc/en/user-guide/authentication_conf.txt => bzrlib/help_topics/en/authentication.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
doc/en/user-guide/configuration.txt => bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
doc/en/user-guide/conflicts.txt => bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
doc/en/user-reference/hooks.txt => bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
modified:
.bzrignore bzrignore-20050311232317-81f7b71efa2db11a
Makefile Makefile-20050805140406-d96e3498bb61c5bb
NEWS NEWS-20050323055033-4e00b5db738777ff
README README-20050309040720-8f368abf9f346b9d
bzr bzr.py-20050313053754-5485f144c7006fa6
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
bzrlib/branch.py branch.py-20050309040759-e4baf4e0d046576e
bzrlib/bugtracker.py bugtracker.py-20070410073305-vu1vu1qosjurg8kb-1
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bundle/serializer/v4.py v10.py-20070611062757-5ggj7k18s9dej0fr-1
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/cmd_version_info.py __init__.py-20051228204928-697d01fdca29c99b
bzrlib/config.py config.py-20051011043216-070c74f4e9e338e8
bzrlib/debug.py debug.py-20061102062349-vdhrw9qdpck8cl35-1
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
bzrlib/dirstate.py dirstate.py-20060728012006-d6mvoihjb3je9peu-1
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/index.py index.py-20070712131115-lolkarso50vjr64s-1
bzrlib/inventory.py inventory.py-20050309040759-6648b84ca2005b37
bzrlib/lockable_files.py control_files.py-20051111201905-bb88546e799d669f
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/merge_directive.py merge_directive.py-20070228184838-ja62280spt1g7f4x-1
bzrlib/osutils.py osutils.py-20050309040759-eeaff12fbf77ac86
bzrlib/plugins/launchpad/lp_indirect.py lp_indirect.py-20070126012204-de5rugwlt22c7u7e-1
bzrlib/plugins/launchpad/test_lp_indirect.py test_lp_indirect.py-20070126002743-oyle362tzv9cd8mi-1
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/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/revision.py revision.py-20050309040759-e77802c08f3999d5
bzrlib/smart/medium.py medium.py-20061103051856-rgu2huy59fkz902q-1
bzrlib/switch.py switch.py-20071116011000-v5lnw7d2wkng9eux-1
bzrlib/symbol_versioning.py symbol_versioning.py-20060105104851-9ecf8af605d15a80
bzrlib/tests/HttpServer.py httpserver.py-20061012142527-m1yxdj1xazsf8d7s-1
bzrlib/tests/TestUtil.py TestUtil.py-20050824080200-5f70140a2d938694
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/test_bound_branches.py test_bound_branches.py-20051109215527-2373188ad566c205
bzrlib/tests/blackbox/test_cat.py test_cat.py-20051201162916-f0937e4e19ea24b3
bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
bzrlib/tests/blackbox/test_diff.py test_diff.py-20060110203741-aa99ac93e633d971
bzrlib/tests/blackbox/test_exceptions.py test_exceptions.py-20060604211237-yi2cxg0ose3xk4id-1
bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/blackbox/test_non_ascii.py test_non_ascii.py-20060105214030-68010be784a5d854
bzrlib/tests/blackbox/test_outside_wt.py test_outside_wt.py-20060116200058-98edd33e7db8bdde
bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
bzrlib/tests/blackbox/test_send.py test_bundle.py-20060616222707-c21c8b7ea5ef57b1
bzrlib/tests/blackbox/test_split.py test_split.py-20061008023421-qy0vdpzysh5rriu8-1
bzrlib/tests/blackbox/test_uncommit.py test_uncommit.py-20051027212835-84944b63adae51be
bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
bzrlib/tests/repository_implementations/__init__.py __init__.py-20060131092037-9564957a7d4a841b
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_ancestry.py test_ancestry.py-20050913023709-69768e94848312c6
bzrlib/tests/test_bugtracker.py test_bugtracker.py-20070410073305-vu1vu1qosjurg8kb-2
bzrlib/tests/test_config.py testconfig.py-20051011041908-742d0c15d8d8c8eb
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
bzrlib/tests/test_errors.py test_errors.py-20060210110251-41aba2deddf936a8
bzrlib/tests/test_extract.py test_extract.py-20061002214140-qdnnm67q1ov6x6pd-1
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_help.py test_help.py-20070419045354-6q6rq15j9e2n5fna-1
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/tests/test_http_response.py test_http_response.py-20060628233143-950b2a482a32505d
bzrlib/tests/test_lockable_files.py test_lockable_files.py-20051225183927-365c7fd99591caf1
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
bzrlib/tests/test_merge_directive.py test_merge_directive-20070228184838-ja62280spt1g7f4x-2
bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
bzrlib/tests/test_osutils.py test_osutils.py-20051201224856-e48ee24c12182989
bzrlib/tests/test_reconfigure.py test_reconfigure.py-20070908040425-6ykgo7escxhyrg9p-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_revision.py testrevision.py-20050804210559-46f5e1eb67b01289
bzrlib/tests/test_selftest.py test_selftest.py-20051202044319-c110a115d8c0456a
bzrlib/tests/test_switch.py test_switch.py-20071116011000-v5lnw7d2wkng9eux-2
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/tests/test_transport.py testtransport.py-20050718175618-e5cdb99f4555ddce
bzrlib/tests/test_transport_implementations.py test_transport_implementations.py-20051227111451-f97c5c7d5c49fce7
bzrlib/tests/test_version_info.py test_version_info.py-20051228204928-2c364e30b702b41b
bzrlib/tests/tree_implementations/test_inv.py test_inv.py-20070312023226-0cdvk5uwhutis9vg-1
bzrlib/trace.py trace.py-20050309040759-c8ed824bdcd4748a
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
bzrlib/transport/__init__.py transport.py-20050711165921-4978aa7ce1285ad5
bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
bzrlib/transport/http/_pycurl.py pycurlhttp.py-20060110060940-4e2a705911af77a6
bzrlib/transport/http/_urllib.py _urlgrabber.py-20060113083826-0bbf7d992fbf090c
bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
bzrlib/transport/http/response.py _response.py-20060613154423-a2ci7hd4iw5c7fnt-1
bzrlib/version_info_formats/__init__.py generate_version_info.py-20051228204928-8358edabcddcd97e
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
doc/developers/bundles.txt bundles.txt-20070621030528-qkjnugd7iyud6ow3-1
doc/developers/index.txt index.txt-20070508041241-qznziunkg0nffhiw-1
doc/developers/packrepo.txt knitpack.txt-20071023074744-q0g5u8me8gk5zbtb-1
doc/en/mini-tutorial/index.txt index.txt-20070813141352-2u64ooqzo0or4hss-2
doc/en/quick-reference/quick-start-summary.svg quickstartsummary.sv-20070813143223-5i7bgw7w8s7l3ae2-3
doc/en/user-guide/browsing_history.txt browsing_history.txt-20071121073725-0corxykv5irjal00-2
doc/en/user-guide/bug_trackers.txt bug_trackers.txt-20070713223459-khxdlcudraii95uv-1
doc/en/user-guide/configuring_bazaar.txt configuring_bazaar.t-20071128000722-ncxiua259xwbdbg7-1
doc/en/user-guide/core_concepts.txt core_concepts.txt-20071114035000-q36a9h57ps06uvnl-2
doc/en/user-guide/hooks.txt hooks.txt-20070829200551-7nr6e5a1io6x78uf-1
doc/en/user-guide/http_smart_server.txt fastcgi.txt-20061005091552-rz8pva0olkxv0sd8-3
doc/en/user-guide/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
doc/en/user-guide/installing_bazaar.txt installing_bazaar.tx-20071114035000-q36a9h57ps06uvnl-4
doc/en/user-guide/introducing_bazaar.txt introducing_bazaar.t-20071114035000-q36a9h57ps06uvnl-5
doc/en/user-guide/merging_changes.txt merging_changes.txt-20071122141511-0knao2lklsdsvb1q-3
doc/en/user-guide/plugins.txt plugins.txt-20060314145616-525099a747f3ffdd
doc/en/user-guide/publishing_a_branch.txt publishing_a_branch.-20071123055134-k5x4ekduci2lbn36-2
doc/en/user-guide/resolving_conflicts.txt resolving_conflicts.-20071122141511-0knao2lklsdsvb1q-5
doc/en/user-guide/reusing_a_checkout.txt reusing_a_checkout.t-20071123055134-k5x4ekduci2lbn36-3
doc/en/user-guide/sending_changes.txt sending_changes.txt-20071123154453-dk2mjhrg1vpjm5w2-4
doc/en/user-guide/server.txt server.txt-20060913044801-h939fvbwzz39gf7g-1
doc/en/user-guide/setting_up_email.txt setting_up_email.txt-20060314161707-fd242c8944346173
doc/en/user-guide/specifying_revisions.txt specifying_revisions.txt-20060314161707-19deb139101bea33
doc/en/user-guide/undoing_mistakes.txt undoing_mistakes.txt-20071121092300-8fyacngt1w98e5mp-1
doc/en/user-guide/version_info.txt version_info.txt-20060921215543-gju6o5xdic8w25np-1
doc/en/user-guide/working_offline_central.txt working_offline_cent-20071123055134-k5x4ekduci2lbn36-5
doc/index.txt index.txt-20070813101924-07gd9i9d2jt124bf-1
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
tools/doc_generate/autodoc_rstx.py autodoc_rstx.py-20060420024836-3e0d4a526452193c
tools/rst2html.py rst2html.py-20060817120932-gn177u8v0008txhu-1
bzrlib/help_topics/__init__.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/help_topics/en/authentication.txt authentication_conf.-20071104135035-glfv0ri355tyg1nf-1
bzrlib/help_topics/en/configuration.txt configuration.txt-20060314161707-868350809502af01
bzrlib/help_topics/en/conflicts.txt conflicts.txt-20070723221841-ns3jvwxdb4okn6fk-1
bzrlib/help_topics/en/hooks.txt hooks.txt-20070830033044-xxu2rced13f72dka-1
------------------------------------------------------------
revno: 3074.2.10
revision-id:john at arbash-meinel.com-20071219164503-dxzdtrm0i3jet9ea
parent: john at arbash-meinel.com-20071219154004-wjlljom34fzjw8ws
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Wed 2007-12-19 10:45:03 -0600
message:
Cleanup the test cases (Andrew)
modified:
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
------------------------------------------------------------
revno: 3074.2.9
revision-id:john at arbash-meinel.com-20071219154004-wjlljom34fzjw8ws
parent: john at arbash-meinel.com-20071219151157-stcd2kh9chb4qo61
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Wed 2007-12-19 09:40:04 -0600
message:
Large simplification by ignoring len() and just sticking with py objects.
modified:
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
------------------------------------------------------------
revno: 3074.2.8
revision-id:john at arbash-meinel.com-20071219151157-stcd2kh9chb4qo61
parent: john at arbash-meinel.com-20071205140908-d02s0wgd2wssygwv
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Wed 2007-12-19 09:11:57 -0600
message:
Stop using const, since PyObject_Compare doesn't like it. (Lukáš)
modified:
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
------------------------------------------------------------
revno: 3074.2.7
revision-id:john at arbash-meinel.com-20071205140908-d02s0wgd2wssygwv
parent: john at arbash-meinel.com-20071205140005-aexhlajexv5r1w3l
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Wed 2007-12-05 08:09:08 -0600
message:
Using just PyObject_Compare: 3.6s-3.9s
modified:
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
------------------------------------------------------------
revno: 3074.2.6
revision-id:john at arbash-meinel.com-20071205140005-aexhlajexv5r1w3l
parent: john at arbash-meinel.com-20071205134925-4s1wo9k920cbnavb
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Wed 2007-12-05 08:00:05 -0600
message:
The numbers are a bit noisy...
Using djb2 hash and memcmp/PyObject_Compare ranges from: 3.5s-4.1s
Using original code ranges from: 3.9s-4.1s
modified:
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
------------------------------------------------------------
revno: 3074.2.5
revision-id:john at arbash-meinel.com-20071205134925-4s1wo9k920cbnavb
parent: john at arbash-meinel.com-20071204170735-1l5oc5vt7w473qds
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Wed 2007-12-05 07:49:25 -0600
message:
using PyObject_Hash, but memcmp if both sides are strings
Using original djb2 hash and only handling strings: 4.340s
With PyObject_Hash and memcmp/PyObject_Compare: 5.550s :(
modified:
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
------------------------------------------------------------
revno: 3074.2.4
revision-id:john at arbash-meinel.com-20071204170735-1l5oc5vt7w473qds
parent: john at arbash-meinel.com-20071204162828-chfnl5ylzkh0y2ll
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Tue 2007-12-04 11:07:35 -0600
message:
Don't leak references to the sequence object.
modified:
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
------------------------------------------------------------
revno: 3074.2.3
revision-id:john at arbash-meinel.com-20071204162828-chfnl5ylzkh0y2ll
parent: john at arbash-meinel.com-20071204160709-mmzmchn2daf0quma
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Tue 2007-12-04 10:28:28 -0600
message:
Enable some error checking, and small amount of code cleanup.
If PyObject_Hash() or PyObject_Length() fails, we should raise an exception, not
silently swallow it.
modified:
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
------------------------------------------------------------
revno: 3074.2.2
revision-id:john at arbash-meinel.com-20071204160709-mmzmchn2daf0quma
parent: john at arbash-meinel.com-20071204152439-hlj4y6a8a2fb6nkz
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Tue 2007-12-04 10:07:09 -0600
message:
Simple cleanup.
modified:
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
------------------------------------------------------------
revno: 3074.2.1
revision-id:john at arbash-meinel.com-20071204152439-hlj4y6a8a2fb6nkz
parent: pqm at pqm.ubuntu.com-20071204035213-2kot5u403spjchen
committer: John Arbash Meinel <john at arbash-meinel.com>
branch nick: patience_tuples
timestamp: Tue 2007-12-04 09:24:39 -0600
message:
Change the C PatienceDiff implementation to support arbitrary objects.
modified:
bzrlib/_patiencediff_c.c _patiencediff_c.c-20070721205602-q3imkipwlgagp3cy-1
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
------------------------------------------------------------
revno: 3111.1.19
revision-id:pqm at pqm.ubuntu.com-20071219211725-mgnpnt2keboqflwi
parent: pqm at pqm.ubuntu.com-20071219091053-81xgp971m1pgmccf
parent: abentley at panoramicfeedback.com-20071219201946-stemyt7hujf76w7p
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Wed 2007-12-19 21:17:25 +0000
message:
Sort diff results alphabetically
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
------------------------------------------------------------
revno: 3111.1.12.4.3
revision-id:abentley at panoramicfeedback.com-20071219201946-stemyt7hujf76w7p
parent: abentley at panoramicfeedback.com-20071219154601-c530qweqgev4z7x5
committer: Aaron Bentley <abentley at panoramicfeedback.com>
branch nick: no-inventory2
timestamp: Wed 2007-12-19 15:19:46 -0500
message:
Tweak path handling
modified:
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
------------------------------------------------------------
revno: 3111.1.12.4.2
revision-id:abentley at panoramicfeedback.com-20071219154601-c530qweqgev4z7x5
parent: aaron.bentley at utoronto.ca-20071218041534-w9spqi20zck44bvd
committer: Aaron Bentley <abentley at panoramicfeedback.com>
branch nick: no-inventory2
timestamp: Wed 2007-12-19 10:46:01 -0500
message:
Handle diff with property change correctly
modified:
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
------------------------------------------------------------
revno: 3111.1.12.4.1
revision-id:aaron.bentley at utoronto.ca-20071218041534-w9spqi20zck44bvd
parent: pqm at pqm.ubuntu.com-20071217234754-hzi1en08nilnvh6s
committer: Aaron Bentley <aaron.bentley at utoronto.ca>
branch nick: no-inventory2
timestamp: Mon 2007-12-17 23:15:34 -0500
message:
Diff sorts files in alphabetical order
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/diff.py diff.py-20050309040759-26944fbbf2ebbf36
bzrlib/tests/test_diff.py testdiff.py-20050727164403-d1a3496ebb12e339
-------------- next part --------------
=== modified file 'NEWS'
--- a/NEWS 2007-12-19 08:06:07 +0000
+++ b/NEWS 2007-12-20 14:14:21 +0000
@@ -21,6 +21,8 @@
IMPROVEMENTS:
+ * ``bzr diff`` now sorts files in alphabetical order. (Aaron Bentley)
+
* ``bzr diff`` now works on branches without working trees. Tree-less
branches can also be compared to each other and to working trees using
the new diff options ``--old`` and ``--new``. Diffing between branches,
@@ -34,10 +36,16 @@
* Merge directives now fetch prerequisites from the target branch if
needed. (Aaron Bentley)
+ * pycurl now handles digest authentication.
+ (Vincent Ladeuil)
+
* ``reconfigure`` can now convert from repositories. (Aaron Bentley)
* ``-l`` is now a short form for ``--limit`` in ``log``. (Matt Nordhoff)
+ * ``merge`` now warns when merge directives cause cherrypicks.
+ (Aaron Bentley)
+
* ``split`` now supported, to enable splitting large trees into smaller
pieces. (Aaron Bentley)
@@ -49,6 +57,10 @@
* Fix traceback when sending large response bodies over the smart protocol
on Windows. (Andrew Bennetts, #115781)
+ * pycurl authentication handling was broken and incomplete. Fix handling of
+ user:pass embedded in the urls.
+ (Vincent Ladeuil, #177643)
+
* Transform failures no longer cause ImmortalLimbo errors (Aaron Bentley,
#137681)
@@ -81,6 +93,9 @@
dictionary instead of ``get_parents`` returning a list.
``get_parents`` is now considered deprecated. (John Arbash Meinel)
+ * Patience Diff now supports arbitrary python objects, as long as they
+ support ``hash()``. (John Arbash Meinel)
+
API BREAKS:
TESTING:
@@ -181,6 +196,9 @@
* Added a --coverage option to selftest. (Andrew Bennetts)
+ * Annotate merge (merge-type=weave) now supports cherrypicking.
+ (Aaron Bentley)
+
* ``bzr commit`` now doesn't print the revision number twice. (Matt
Nordhoff, #172612)
=== modified file 'bzrlib/_patiencediff_c.c'
--- a/bzrlib/_patiencediff_c.c 2007-09-04 09:10:35 +0000
+++ b/bzrlib/_patiencediff_c.c 2007-12-19 15:40:04 +0000
@@ -70,11 +70,10 @@
struct line {
- int hash; /* hash code of the string */
+ long hash; /* hash code of the string/object */
Py_ssize_t next; /* next line from the same equivalence class */
Py_ssize_t equiv; /* equivalence class */
- Py_ssize_t len;
- const char *data;
+ PyObject *data;
};
@@ -151,8 +150,8 @@
static inline int
compare_lines(struct line *a, struct line *b)
{
- return ((a->hash != b->hash) || (a->len != b->len) ||
- memcmp(a->data, b->data, a->len));
+ return ((a->hash != b->hash)
+ || PyObject_Compare(a->data, b->data));
}
@@ -545,9 +544,7 @@
static Py_ssize_t
load_lines(PyObject *orig, struct line **lines)
{
- Py_ssize_t size, i, j;
- int h;
- char *p;
+ Py_ssize_t size, i;
struct line *line;
PyObject *seq, *item;
@@ -571,29 +568,18 @@
for (i = 0; i < size; i++) {
item = PySequence_Fast_GET_ITEM(seq, i);
- if (!PyString_Check(item)){
- PyErr_Format(PyExc_TypeError,
- "sequence item %zd: expected string,"
- " %.80s found",
- i, item->ob_type->tp_name);
- Py_DECREF(seq);
- return -1;
+ line->data = item;
+ line->hash = PyObject_Hash(item);
+ if (line->hash == (-1)) {
+ /* Propogate the hash exception */
+ size = -1;
+ goto cleanup;
}
- line->len = PyString_GET_SIZE(item);
- line->data = p = PyString_AS_STRING(item);
- /* 'djb2' hash. This gives us a nice compromise between fast hash
- function and a hash with less collisions. The algorithm doesn't
- use the hash for actual lookups, only for building the table
- so a better hash function wouldn't bring us much benefit, but
- would make this loading code slower. */
- h = 5381;
- for (j = 0; j < line->len; j++)
- h = ((h << 5) + h) + *p++;
- line->hash = h;
line->next = SENTINEL;
line++;
}
+ cleanup:
Py_DECREF(seq);
return size;
}
=== modified file 'bzrlib/builtins.py'
--- a/bzrlib/builtins.py 2007-12-19 06:04:19 +0000
+++ b/bzrlib/builtins.py 2007-12-20 00:56:46 +0000
@@ -3023,10 +3023,6 @@
" merges. Not cherrypicking or"
" multi-merges.")
repository = tree.branch.repository
- graph = repository.get_graph()
- base_revision = graph.find_unique_lca(parents[0], parents[1])
- base_tree = repository.revision_tree(base_revision)
- other_tree = repository.revision_tree(parents[1])
interesting_ids = None
new_conflicts = []
conflicts = tree.conflicts()
@@ -3062,18 +3058,19 @@
# list, we imply that the working tree text has seen and rejected
# all the changes from the other tree, when in fact those changes
# have not yet been seen.
+ pb = ui.ui_factory.nested_progress_bar()
tree.set_parent_ids(parents[:1])
try:
- conflicts = _mod_merge.merge_inner(
- tree.branch, other_tree, base_tree,
- this_tree=tree,
- interesting_ids=interesting_ids,
- other_rev_id=parents[1],
- merge_type=merge_type,
- show_base=show_base,
- reprocess=reprocess)
+ merger = _mod_merge.Merger.from_revision_ids(pb,
+ tree, parents[1])
+ merger.interesting_ids = interesting_ids
+ merger.merge_type = merge_type
+ merger.show_base = show_base
+ merger.reprocess = reprocess
+ conflicts = merger.do_merge()
finally:
tree.set_parent_ids(parents)
+ pb.finished()
finally:
tree.unlock()
if conflicts > 0:
=== modified file 'bzrlib/diff.py'
--- a/bzrlib/diff.py 2007-12-18 15:22:47 +0000
+++ b/bzrlib/diff.py 2007-12-19 21:17:25 +0000
@@ -813,45 +813,52 @@
"""
# TODO: Generation of pseudo-diffs for added/deleted files could
# be usefully made into a much faster special case.
-
- delta = self.new_tree.changes_from(self.old_tree,
- specific_files=specific_files,
- extra_trees=extra_trees, require_versioned=True)
-
+ iterator = self.new_tree._iter_changes(self.old_tree,
+ specific_files=specific_files,
+ extra_trees=extra_trees,
+ require_versioned=True)
has_changes = 0
- for path, file_id, kind in delta.removed:
- has_changes = 1
- path_encoded = path.encode(self.path_encoding, "replace")
- self.to_file.write("=== removed %s '%s'\n" % (kind, path_encoded))
- self.diff(file_id, path, path)
-
- for path, file_id, kind in delta.added:
- has_changes = 1
- path_encoded = path.encode(self.path_encoding, "replace")
- self.to_file.write("=== added %s '%s'\n" % (kind, path_encoded))
- self.diff(file_id, path, path)
- for (old_path, new_path, file_id, kind,
- text_modified, meta_modified) in delta.renamed:
- has_changes = 1
- prop_str = get_prop_change(meta_modified)
- oldpath_encoded = old_path.encode(self.path_encoding, "replace")
- newpath_encoded = new_path.encode(self.path_encoding, "replace")
- self.to_file.write("=== renamed %s '%s' => '%s'%s\n" % (kind,
- oldpath_encoded, newpath_encoded, prop_str))
- if text_modified:
- self.diff(file_id, old_path, new_path)
- for path, file_id, kind, text_modified, meta_modified in\
- delta.modified:
- has_changes = 1
- prop_str = get_prop_change(meta_modified)
- path_encoded = path.encode(self.path_encoding, "replace")
- self.to_file.write("=== modified %s '%s'%s\n" % (kind,
- path_encoded, prop_str))
- # The file may be in a different location in the old tree (because
- # the containing dir was renamed, but the file itself was not)
- if text_modified:
- old_path = self.old_tree.id2path(file_id)
- self.diff(file_id, old_path, path)
+ def changes_key(change):
+ old_path, new_path = change[1]
+ path = new_path
+ if path is None:
+ path = old_path
+ return path
+ def get_encoded_path(path):
+ if path is not None:
+ return path.encode(self.path_encoding, "replace")
+ for (file_id, paths, changed_content, versioned, parent, name, kind,
+ executable) in sorted(iterator, key=changes_key):
+ if parent == (None, None):
+ continue
+ oldpath, newpath = paths
+ oldpath_encoded = get_encoded_path(paths[0])
+ newpath_encoded = get_encoded_path(paths[1])
+ old_present = (kind[0] is not None and versioned[0])
+ new_present = (kind[1] is not None and versioned[1])
+ renamed = (parent[0], name[0]) != (parent[1], name[1])
+ prop_str = get_prop_change(executable[0] != executable[1])
+ if (old_present, new_present) == (True, False):
+ self.to_file.write("=== removed %s '%s'\n" %
+ (kind[0], oldpath_encoded))
+ newpath = oldpath
+ elif (old_present, new_present) == (False, True):
+ self.to_file.write("=== added %s '%s'\n" %
+ (kind[1], newpath_encoded))
+ oldpath = newpath
+ elif renamed:
+ self.to_file.write("=== renamed %s '%s' => '%s'%s\n" %
+ (kind[0], oldpath_encoded, newpath_encoded, prop_str))
+ else:
+ # if it was produced by _iter_changes, it must be
+ # modified *somehow*, either content or execute bit.
+ self.to_file.write("=== modified %s '%s'%s\n" % (kind[0],
+ newpath_encoded, prop_str))
+ if changed_content:
+ self.diff(file_id, oldpath, newpath)
+ has_changes = 1
+ if renamed:
+ has_changes = 1
return has_changes
def diff(self, file_id, old_path, new_path):
=== modified file 'bzrlib/errors.py'
--- a/bzrlib/errors.py 2007-12-17 17:28:25 +0000
+++ b/bzrlib/errors.py 2007-12-20 00:56:46 +0000
@@ -1101,6 +1101,12 @@
" no merge base revision was specified.")
+class CannotReverseCherrypick(BzrError):
+
+ _fmt = ('Selected merge cannot perform reverse cherrypicks. Try merge3'
+ ' or diff3.')
+
+
class NoCommonAncestor(BzrError):
_fmt = "Revisions have no common ancestor: %(revision_a)s %(revision_b)s"
=== modified file 'bzrlib/merge.py'
--- a/bzrlib/merge.py 2007-12-06 17:52:30 +0000
+++ b/bzrlib/merge.py 2007-12-20 04:20:19 +0000
@@ -119,6 +119,8 @@
tree.branch.repository.get_graph().is_ancestor(
base_revision_id, tree.branch.last_revision())):
base_revision_id = None
+ else:
+ warning('Performing cherrypick')
merger = klass.from_revision_ids(pb, tree, other_revision_id,
base_revision_id)
return merger, verified
@@ -368,6 +370,12 @@
elif self.show_base:
raise BzrError("Showing base is not supported for this"
" merge type. %s" % self.merge_type)
+ if (not getattr(self.merge_type, 'supports_reverse_cherrypick', True)
+ and not self.base_is_other_ancestor):
+ raise errors.CannotReverseCherrypick()
+ if self.merge_type.history_based:
+ kwargs['cherrypick'] = (not self.base_is_ancestor or
+ not self.base_is_other_ancestor)
self.this_tree.lock_tree_write()
if self.base_tree is not None:
self.base_tree.lock_read()
@@ -415,6 +423,7 @@
supports_reprocess = True
supports_show_base = True
history_based = False
+ supports_reverse_cherrypick = True
winner_idx = {"this": 2, "other": 1, "conflict": 1}
def __init__(self, working_tree, this_tree, base_tree, other_tree,
@@ -977,11 +986,14 @@
"""Three-way tree merger, text weave merger."""
supports_reprocess = True
supports_show_base = False
+ supports_reverse_cherrypick = False
+ history_based = True
def __init__(self, working_tree, this_tree, base_tree, other_tree,
interesting_ids=None, pb=DummyProgress(), pp=None,
reprocess=False, change_reporter=None,
- interesting_files=None):
+ interesting_files=None, cherrypick=False):
+ self.cherrypick = cherrypick
super(WeaveMerger, self).__init__(working_tree, this_tree,
base_tree, other_tree,
interesting_ids=interesting_ids,
@@ -993,7 +1005,12 @@
There is no distinction between lines that are meant to contain <<<<<<<
and conflicts.
"""
- plan = self.this_tree.plan_file_merge(file_id, self.other_tree)
+ if self.cherrypick:
+ base = self.base_tree
+ else:
+ base = None
+ plan = self.this_tree.plan_file_merge(file_id, self.other_tree,
+ base=base)
if 'merge' in debug.debug_flags:
plan = list(plan)
trans_id = self.tt.trans_id_file_id(file_id)
@@ -1263,3 +1280,21 @@
else:
new.intersection_update(result)
return new
+
+ @staticmethod
+ def _subtract_plans(old_plan, new_plan):
+ matcher = patiencediff.PatienceSequenceMatcher(None, old_plan,
+ new_plan)
+ last_j = 0
+ for i, j, n in matcher.get_matching_blocks():
+ for jj in range(last_j, j):
+ yield new_plan[jj]
+ for jj in range(j, j+n):
+ plan_line = new_plan[jj]
+ if plan_line[0] == 'new-b':
+ pass
+ elif plan_line[0] == 'killed-b':
+ yield 'unchanged', plan_line[1]
+ else:
+ yield plan_line
+ last_j = j + n
=== modified file 'bzrlib/tests/blackbox/test_merge.py'
--- a/bzrlib/tests/blackbox/test_merge.py 2007-12-04 03:13:51 +0000
+++ b/bzrlib/tests/blackbox/test_merge.py 2007-12-20 04:20:19 +0000
@@ -301,9 +301,10 @@
target.commit('empty commit')
self.write_directive('directive', source.branch, 'target', 'rev2',
'rev1')
- self.run_bzr('merge -d target directive')
+ out, err = self.run_bzr('merge -d target directive')
self.failIfExists('target/a')
self.failUnlessExists('target/b')
+ self.assertContainsRe(err, 'Performing cherrypick')
def write_directive(self, filename, source, target, revision_id,
base_revision_id=None, mangle_patch=False):
@@ -406,3 +407,16 @@
graph = tree_a.branch.repository.get_graph(tree_b.branch.repository)
out, err = self.run_bzr(['merge', '-d', 'a', 'b'])
self.assertContainsRe(err, 'Warning: criss-cross merge encountered.')
+
+ def test_weave_cherrypick(self):
+ this_tree = self.make_branch_and_tree('this')
+ self.build_tree_contents([('this/file', "a\n")])
+ this_tree.add('file')
+ this_tree.commit('rev1')
+ other_tree = this_tree.bzrdir.sprout('other').open_workingtree()
+ self.build_tree_contents([('other/file', "a\nb\n")])
+ other_tree.commit('rev2b')
+ self.build_tree_contents([('other/file', "c\na\nb\n")])
+ other_tree.commit('rev3b')
+ self.run_bzr('merge --weave -d this other -r -2..-1')
+ self.assertFileEqual('c\na\n', 'this/file')
=== modified file 'bzrlib/tests/test_diff.py'
--- a/bzrlib/tests/test_diff.py 2007-12-06 18:20:35 +0000
+++ b/bzrlib/tests/test_diff.py 2007-12-19 23:40:39 +0000
@@ -723,6 +723,15 @@
self.assertContainsRe(differ.to_file.getvalue(),
'was: old\nis: new\n')
+ def test_alphabetical_order(self):
+ self.build_tree(['new-tree/a-file'])
+ self.new_tree.add('a-file')
+ self.build_tree(['old-tree/b-file'])
+ self.old_tree.add('b-file')
+ self.differ.show_diff(None)
+ self.assertContainsRe(self.differ.to_file.getvalue(),
+ '.*a-file(.|\n)*b-file')
+
class TestPatienceDiffLib(TestCase):
@@ -774,37 +783,43 @@
# This is what it currently gives:
test_one('aBccDe', 'abccde', [(0,0), (5,5)])
+ def assertDiffBlocks(self, a, b, expected_blocks):
+ """Check that the sequence matcher returns the correct blocks.
+
+ :param a: A sequence to match
+ :param b: Another sequence to match
+ :param expected_blocks: The expected output, not including the final
+ matching block (len(a), len(b), 0)
+ """
+ matcher = self._PatienceSequenceMatcher(None, a, b)
+ blocks = matcher.get_matching_blocks()
+ last = blocks.pop()
+ self.assertEqual((len(a), len(b), 0), last)
+ self.assertEqual(expected_blocks, blocks)
+
def test_matching_blocks(self):
- def chk_blocks(a, b, expected_blocks):
- # difflib always adds a signature of the total
- # length, with no matching entries at the end
- s = self._PatienceSequenceMatcher(None, a, b)
- blocks = s.get_matching_blocks()
- self.assertEquals((len(a), len(b), 0), blocks[-1])
- self.assertEquals(expected_blocks, blocks[:-1])
-
# Some basic matching tests
- chk_blocks('', '', [])
- chk_blocks([], [], [])
- chk_blocks('abc', '', [])
- chk_blocks('', 'abc', [])
- chk_blocks('abcd', 'abcd', [(0, 0, 4)])
- chk_blocks('abcd', 'abce', [(0, 0, 3)])
- chk_blocks('eabc', 'abce', [(1, 0, 3)])
- chk_blocks('eabce', 'abce', [(1, 0, 4)])
- chk_blocks('abcde', 'abXde', [(0, 0, 2), (3, 3, 2)])
- chk_blocks('abcde', 'abXYZde', [(0, 0, 2), (3, 5, 2)])
- chk_blocks('abde', 'abXYZde', [(0, 0, 2), (2, 5, 2)])
- # This may check too much, but it checks to see that
+ self.assertDiffBlocks('', '', [])
+ self.assertDiffBlocks([], [], [])
+ self.assertDiffBlocks('abc', '', [])
+ self.assertDiffBlocks('', 'abc', [])
+ self.assertDiffBlocks('abcd', 'abcd', [(0, 0, 4)])
+ self.assertDiffBlocks('abcd', 'abce', [(0, 0, 3)])
+ self.assertDiffBlocks('eabc', 'abce', [(1, 0, 3)])
+ self.assertDiffBlocks('eabce', 'abce', [(1, 0, 4)])
+ self.assertDiffBlocks('abcde', 'abXde', [(0, 0, 2), (3, 3, 2)])
+ self.assertDiffBlocks('abcde', 'abXYZde', [(0, 0, 2), (3, 5, 2)])
+ self.assertDiffBlocks('abde', 'abXYZde', [(0, 0, 2), (2, 5, 2)])
+ # This may check too much, but it checks to see that
# a copied block stays attached to the previous section,
# not the later one.
# difflib would tend to grab the trailing longest match
# which would make the diff not look right
- chk_blocks('abcdefghijklmnop', 'abcdefxydefghijklmnop',
- [(0, 0, 6), (6, 11, 10)])
+ self.assertDiffBlocks('abcdefghijklmnop', 'abcdefxydefghijklmnop',
+ [(0, 0, 6), (6, 11, 10)])
# make sure it supports passing in lists
- chk_blocks(
+ self.assertDiffBlocks(
['hello there\n',
'world\n',
'how are you today?\n'],
@@ -814,21 +829,45 @@
# non unique lines surrounded by non-matching lines
# won't be found
- chk_blocks('aBccDe', 'abccde', [(0,0,1), (5,5,1)])
+ self.assertDiffBlocks('aBccDe', 'abccde', [(0,0,1), (5,5,1)])
# But they only need to be locally unique
- chk_blocks('aBcDec', 'abcdec', [(0,0,1), (2,2,1), (4,4,2)])
+ self.assertDiffBlocks('aBcDec', 'abcdec', [(0,0,1), (2,2,1), (4,4,2)])
# non unique blocks won't be matched
- chk_blocks('aBcdEcdFg', 'abcdecdfg', [(0,0,1), (8,8,1)])
+ self.assertDiffBlocks('aBcdEcdFg', 'abcdecdfg', [(0,0,1), (8,8,1)])
# but locally unique ones will
- chk_blocks('aBcdEeXcdFg', 'abcdecdfg', [(0,0,1), (2,2,2),
+ self.assertDiffBlocks('aBcdEeXcdFg', 'abcdecdfg', [(0,0,1), (2,2,2),
(5,4,1), (7,5,2), (10,8,1)])
- chk_blocks('abbabbXd', 'cabbabxd', [(7,7,1)])
- chk_blocks('abbabbbb', 'cabbabbc', [])
- chk_blocks('bbbbbbbb', 'cbbbbbbc', [])
+ self.assertDiffBlocks('abbabbXd', 'cabbabxd', [(7,7,1)])
+ self.assertDiffBlocks('abbabbbb', 'cabbabbc', [])
+ self.assertDiffBlocks('bbbbbbbb', 'cbbbbbbc', [])
+
+ def test_matching_blocks_tuples(self):
+ # Some basic matching tests
+ self.assertDiffBlocks([], [], [])
+ self.assertDiffBlocks([('a',), ('b',), ('c,')], [], [])
+ self.assertDiffBlocks([], [('a',), ('b',), ('c,')], [])
+ self.assertDiffBlocks([('a',), ('b',), ('c,')],
+ [('a',), ('b',), ('c,')],
+ [(0, 0, 3)])
+ self.assertDiffBlocks([('a',), ('b',), ('c,')],
+ [('a',), ('b',), ('d,')],
+ [(0, 0, 2)])
+ self.assertDiffBlocks([('d',), ('b',), ('c,')],
+ [('a',), ('b',), ('c,')],
+ [(1, 1, 2)])
+ self.assertDiffBlocks([('d',), ('a',), ('b',), ('c,')],
+ [('a',), ('b',), ('c,')],
+ [(1, 0, 3)])
+ self.assertDiffBlocks([('a', 'b'), ('c', 'd'), ('e', 'f')],
+ [('a', 'b'), ('c', 'X'), ('e', 'f')],
+ [(0, 0, 1), (2, 2, 1)])
+ self.assertDiffBlocks([('a', 'b'), ('c', 'd'), ('e', 'f')],
+ [('a', 'b'), ('c', 'dX'), ('e', 'f')],
+ [(0, 0, 1), (2, 2, 1)])
def test_opcodes(self):
def chk_ops(a, b, expected_codes):
@@ -946,25 +985,16 @@
def test_multiple_ranges(self):
# There was an earlier bug where we used a bad set of ranges,
# this triggers that specific bug, to make sure it doesn't regress
- def chk_blocks(a, b, expected_blocks):
- # difflib always adds a signature of the total
- # length, with no matching entries at the end
- s = self._PatienceSequenceMatcher(None, a, b)
- blocks = s.get_matching_blocks()
- x = blocks.pop()
- self.assertEquals(x, (len(a), len(b), 0))
- self.assertEquals(expected_blocks, blocks)
-
- chk_blocks('abcdefghijklmnop'
- , 'abcXghiYZQRSTUVWXYZijklmnop'
- , [(0, 0, 3), (6, 4, 3), (9, 20, 7)])
-
- chk_blocks('ABCd efghIjk L'
- , 'AxyzBCn mo pqrstuvwI1 2 L'
- , [(0,0,1), (1, 4, 2), (9, 19, 1), (12, 23, 3)])
+ self.assertDiffBlocks('abcdefghijklmnop',
+ 'abcXghiYZQRSTUVWXYZijklmnop',
+ [(0, 0, 3), (6, 4, 3), (9, 20, 7)])
+
+ self.assertDiffBlocks('ABCd efghIjk L',
+ 'AxyzBCn mo pqrstuvwI1 2 L',
+ [(0,0,1), (1, 4, 2), (9, 19, 1), (12, 23, 3)])
# These are rot13 code snippets.
- chk_blocks('''\
+ self.assertDiffBlocks('''\
trg nqqrq jura lbh nqq n svyr va gur qverpgbel.
"""
gnxrf_netf = ['svyr*']
@@ -1077,6 +1107,19 @@
self._PatienceSequenceMatcher = \
bzrlib._patiencediff_c.PatienceSequenceMatcher_c
+ def test_unhashable(self):
+ """We should get a proper exception here."""
+ # We need to be able to hash items in the sequence, lists are
+ # unhashable, and thus cannot be diffed
+ e = self.assertRaises(TypeError, self._PatienceSequenceMatcher,
+ None, [[]], [])
+ e = self.assertRaises(TypeError, self._PatienceSequenceMatcher,
+ None, ['valid', []], [])
+ e = self.assertRaises(TypeError, self._PatienceSequenceMatcher,
+ None, ['valid'], [[]])
+ e = self.assertRaises(TypeError, self._PatienceSequenceMatcher,
+ None, ['valid'], ['valid', []])
+
class TestPatienceDiffLibFiles(TestCaseInTempDir):
=== modified file 'bzrlib/tests/test_merge.py'
--- a/bzrlib/tests/test_merge.py 2007-12-03 21:33:36 +0000
+++ b/bzrlib/tests/test_merge.py 2007-12-20 02:47:39 +0000
@@ -288,6 +288,52 @@
merger.do_merge()
self.assertEqual(tree_a.get_parent_ids(), [tree_b.last_revision()])
+ def prepare_cherrypick(self):
+ """Prepare a pair of trees for cherrypicking tests.
+
+ Both trees have a file, 'file'.
+ rev1 sets content to 'a'.
+ rev2b adds 'b'.
+ rev3b adds 'c'.
+ A full merge of rev2b and rev3b into this_tree would add both 'b' and
+ 'c'. A successful cherrypick of rev2b-rev3b into this_tree will add
+ 'c', but not 'b'.
+ """
+ this_tree = self.make_branch_and_tree('this')
+ self.build_tree_contents([('this/file', "a\n")])
+ this_tree.add('file')
+ this_tree.commit('rev1')
+ other_tree = this_tree.bzrdir.sprout('other').open_workingtree()
+ self.build_tree_contents([('other/file', "a\nb\n")])
+ other_tree.commit('rev2b', rev_id='rev2b')
+ self.build_tree_contents([('other/file', "c\na\nb\n")])
+ other_tree.commit('rev3b', rev_id='rev3b')
+ this_tree.lock_write()
+ self.addCleanup(this_tree.unlock)
+ return this_tree, other_tree
+
+ def test_weave_cherrypick(self):
+ this_tree, other_tree = self.prepare_cherrypick()
+ merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
+ this_tree, 'rev3b', 'rev2b', other_tree.branch)
+ merger.merge_type = _mod_merge.WeaveMerger
+ merger.do_merge()
+ self.assertFileEqual('c\na\n', 'this/file')
+
+ def test_weave_cannot_reverse_cherrypick(self):
+ this_tree, other_tree = self.prepare_cherrypick()
+ merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
+ this_tree, 'rev2b', 'rev3b', other_tree.branch)
+ merger.merge_type = _mod_merge.WeaveMerger
+ self.assertRaises(errors.CannotReverseCherrypick, merger.do_merge)
+
+ def test_merge3_can_reverse_cherrypick(self):
+ this_tree, other_tree = self.prepare_cherrypick()
+ merger = _mod_merge.Merger.from_revision_ids(progress.DummyProgress(),
+ this_tree, 'rev2b', 'rev3b', other_tree.branch)
+ merger.merge_type = _mod_merge.Merge3Merger
+ merger.do_merge()
+
class TestPlanMerge(TestCaseWithMemoryTransport):
@@ -368,3 +414,46 @@
('killed-a', 'b\n'),
('unchanged', 'g\n')],
list(plan))
+
+ def test_subtract_plans(self):
+ old_plan = [
+ ('unchanged', 'a\n'),
+ ('new-a', 'b\n'),
+ ('killed-a', 'c\n'),
+ ('new-b', 'd\n'),
+ ('new-b', 'e\n'),
+ ('killed-b', 'f\n'),
+ ('killed-b', 'g\n'),
+ ]
+ new_plan = [
+ ('unchanged', 'a\n'),
+ ('new-a', 'b\n'),
+ ('killed-a', 'c\n'),
+ ('new-b', 'd\n'),
+ ('new-b', 'h\n'),
+ ('killed-b', 'f\n'),
+ ('killed-b', 'i\n'),
+ ]
+ subtracted_plan = [
+ ('unchanged', 'a\n'),
+ ('new-a', 'b\n'),
+ ('killed-a', 'c\n'),
+ ('new-b', 'h\n'),
+ ('unchanged', 'f\n'),
+ ('killed-b', 'i\n'),
+ ]
+ self.assertEqual(subtracted_plan,
+ list(_PlanMerge._subtract_plans(old_plan, new_plan)))
+
+ def test_plan_merge_with_base(self):
+ self.add_version('COMMON', [], 'abc')
+ self.add_version('THIS', ['COMMON'], 'abcd')
+ self.add_version('BASE', ['COMMON'], 'eabc')
+ self.add_version('OTHER', ['BASE'], 'eafb')
+ plan = self.plan_merge_vf.plan_merge('THIS', 'OTHER', 'BASE')
+ self.assertEqual([('unchanged', 'a\n'),
+ ('new-b', 'f\n'),
+ ('unchanged', 'b\n'),
+ ('killed-b', 'c\n'),
+ ('new-a', 'd\n')
+ ], list(plan))
=== modified file 'bzrlib/transport/http/__init__.py'
--- a/bzrlib/transport/http/__init__.py 2007-12-12 21:06:05 +0000
+++ b/bzrlib/transport/http/__init__.py 2007-12-20 14:14:21 +0000
@@ -114,15 +114,6 @@
else:
self._range_hint = 'multi'
- def _remote_path(self, relpath):
- """Produce absolute path, adjusting protocol."""
- relative = urlutils.unescape(relpath).encode('utf-8')
- path = self._combine_paths(self._path, relative)
- return self._unsplit_url(self._unqualified_scheme,
- self._user, self._password,
- self._host, self._port,
- path)
-
def has(self, relpath):
raise NotImplementedError("has() is abstract on %r" % self)
@@ -151,6 +142,24 @@
"""
raise NotImplementedError(self._get)
+ def _remote_path(self, relpath):
+ """See ConnectedTransport._remote_path.
+
+ user and passwords are not embedded in the path provided to the server.
+ """
+ relative = urlutils.unescape(relpath).encode('utf-8')
+ path = self._combine_paths(self._path, relative)
+ return self._unsplit_url(self._unqualified_scheme,
+ None, None, self._host, self._port, path)
+
+ def _create_auth(self):
+ """Returns a dict returning the credentials provided at build time."""
+ auth = dict(host=self._host, port=self._port,
+ user=self._user, password=self._password,
+ protocol=self._unqualified_scheme,
+ path=self._path)
+ return auth
+
def get_request(self):
return SmartClientHTTPMediumRequest(self)
=== modified file 'bzrlib/transport/http/_pycurl.py'
--- a/bzrlib/transport/http/_pycurl.py 2007-12-11 14:26:18 +0000
+++ b/bzrlib/transport/http/_pycurl.py 2007-12-20 16:36:44 +0000
@@ -123,7 +123,10 @@
# connect to the http server until the first request (which had
# just called us).
connection = pycurl.Curl()
- self._set_connection(connection, None)
+ # First request, initialize credentials.
+ auth = self._create_auth()
+ # Proxy handling is out of reach, so we punt
+ self._set_connection(connection, auth)
return connection
def has(self, relpath):
@@ -295,6 +298,18 @@
curl.setopt(pycurl.USERAGENT, ua_str)
if self.cabundle:
curl.setopt(pycurl.CAINFO, self.cabundle)
+ # Set accepted auth methods
+ curl.setopt(pycurl.HTTPAUTH, pycurl.HTTPAUTH_ANY)
+ curl.setopt(pycurl.PROXYAUTH, pycurl.HTTPAUTH_ANY)
+ auth = self._get_credentials()
+ user = auth.get('user', None)
+ password = auth.get('password', None)
+ userpass = None
+ if user is not None:
+ userpass = user + ':'
+ if password is not None: # '' is a valid password
+ userpass += password
+ curl.setopt(pycurl.USERPWD, userpass)
def _curl_perform(self, curl, header, more_headers=[]):
"""Perform curl operation and translate exceptions."""
=== modified file 'bzrlib/transport/http/_urllib.py'
--- a/bzrlib/transport/http/_urllib.py 2007-12-11 14:26:18 +0000
+++ b/bzrlib/transport/http/_urllib.py 2007-12-20 16:36:44 +0000
@@ -49,17 +49,6 @@
else:
self._opener = self._opener_class()
- def _remote_path(self, relpath):
- """Produce absolute path, adjusting protocol."""
- relative = urlutils.unescape(relpath).encode('utf-8')
- path = self._combine_paths(self._path, relative)
- # urllib2 will be confused if it find authentication
- # info (user, password) in the urls. So we handle them separatly.
-
- # rhaaaa ! confused where ? confused when ? --vila 20070922
- return self._unsplit_url(self._unqualified_scheme,
- None, None, self._host, self._port, path)
-
def _perform(self, request):
"""Send the request to the server and handles common errors.
@@ -74,15 +63,10 @@
# request couldn't do it
connection.cleanup_pipe()
else:
- # First request, intialize credentials.
+ # First request, initialize credentials.
# scheme and realm will be set by the _urllib2_wrappers.AuthHandler
- user = self._user
- password = self._password
- auth = dict(host=self._host, port=self._port,
- user=user, password=password,
- protocol=self._unqualified_scheme,
- path=self._path)
- # Proxy initialization will be done by first proxied request
+ auth = self._create_auth()
+ # Proxy initialization will be done by the first proxied request
proxy_auth = dict()
# Ensure authentication info is provided
request.auth = auth
=== modified file 'bzrlib/transport/http/_urllib2_wrappers.py'
--- a/bzrlib/transport/http/_urllib2_wrappers.py 2007-12-14 10:34:45 +0000
+++ b/bzrlib/transport/http/_urllib2_wrappers.py 2007-12-20 16:36:44 +0000
@@ -1038,8 +1038,8 @@
the prompt, so we build the prompt from the authentication dict which
contains all the needed parts.
- Also, hhtp and proxy AuthHandlers present different prompts to the
- user. The daughter classes hosuld implements a public
+ Also, http and proxy AuthHandlers present different prompts to the
+ user. The daughter classes should implements a public
build_password_prompt using this method.
"""
prompt = '%s' % auth['protocol'].upper() + ' %(user)s@%(host)s'
=== modified file 'bzrlib/tree.py'
--- a/bzrlib/tree.py 2007-12-03 21:33:36 +0000
+++ b/bzrlib/tree.py 2007-12-09 20:58:03 +0000
@@ -291,7 +291,7 @@
"""
raise NotImplementedError(self.annotate_iter)
- def plan_file_merge(self, file_id, other):
+ def plan_file_merge(self, file_id, other, base=None):
"""Generate a merge plan based on annotations.
If the file contains uncommitted changes in this tree, they will be
@@ -303,7 +303,12 @@
vf = versionedfile._PlanMergeVersionedFile(file_id)
last_revision_a = self._get_file_revision(file_id, vf, 'this:')
last_revision_b = other._get_file_revision(file_id, vf, 'other:')
- return vf.plan_merge(last_revision_a, last_revision_b)
+ if base is None:
+ last_revision_base = None
+ else:
+ last_revision_base = base._get_file_revision(file_id, vf, 'base:')
+ return vf.plan_merge(last_revision_a, last_revision_b,
+ last_revision_base)
def _get_file_revision(self, file_id, vf, tree_revision):
def file_revision(revision_tree):
=== modified file 'bzrlib/versionedfile.py'
--- a/bzrlib/versionedfile.py 2007-12-03 21:38:07 +0000
+++ b/bzrlib/versionedfile.py 2007-12-04 03:54:55 +0000
@@ -517,10 +517,15 @@
self._parents = {}
self._lines = {}
- def plan_merge(self, ver_a, ver_b):
+ def plan_merge(self, ver_a, ver_b, base=None):
"""See VersionedFile.plan_merge"""
from merge import _PlanMerge
- return _PlanMerge(ver_a, ver_b, self).plan_merge()
+ if base is None:
+ return _PlanMerge(ver_a, ver_b, self).plan_merge()
+ old_plan = list(_PlanMerge(ver_a, base, self).plan_merge())
+ new_plan = list(_PlanMerge(ver_a, ver_b, self).plan_merge())
+ return _PlanMerge._subtract_plans(old_plan, new_plan)
+
def add_lines(self, version_id, parents, lines):
"""See VersionedFile.add_lines
More information about the bazaar-commits
mailing list