Rev 2606: Merge fix for rm renamed files in http://sourcefrog.net/bzr/rm-renamed
Martin Pool
mbp at sourcefrog.net
Thu Jul 12 10:26:23 BST 2007
At http://sourcefrog.net/bzr/rm-renamed
------------------------------------------------------------
revno: 2606
revision-id: mbp at sourcefrog.net-20070712092621-y3rt81f3t6rvcfnx
parent: pqm at pqm.ubuntu.com-20070712085245-afvocysw990c1a3z
parent: marius.kruger at enerweb.co.za-20070628061106-dw6t7vpj0hlo3461
committer: Martin Pool <mbp at sourcefrog.net>
branch nick: rm-renamed
timestamp: Thu 2007-07-12 19:26:21 +1000
message:
Merge fix for rm renamed files
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
bzrlib/tests/blackbox/test_remove.py test_remove.py-20060530011439-fika5rm84lon0goe-1
bzrlib/tests/workingtree_implementations/test_remove.py test_remove.py-20070413183901-rvnp85rtc0q0sclp-1
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
------------------------------------------------------------
revno: 2475.5.6
revision-id: marius.kruger at enerweb.co.za-20070628061106-dw6t7vpj0hlo3461
parent: marius.kruger at enerweb.co.za-20070627184810-4jq1y5f20xafow9w
committer: Marius Kruger <marius.kruger at enerweb.co.za>
branch nick: bzr.fix_bug_111664
timestamp: Thu 2007-06-28 08:11:06 +0200
message:
* test_remove
- Remove redundant method _assertRemoveErrorContainsRe and update the test
which used to use it.
modified:
bzrlib/tests/workingtree_implementations/test_remove.py test_remove.py-20070413183901-rvnp85rtc0q0sclp-1
------------------------------------------------------------
revno: 2475.5.5
revision-id: marius.kruger at enerweb.co.za-20070627184810-4jq1y5f20xafow9w
parent: amanic at gmail.com-20070623194517-9kgydu5fgjtzmu7m
parent: pqm at pqm.ubuntu.com-20070627080723-ci6ghe3bsm0snyit
committer: Marius Kruger <marius.kruger at enerweb.co.za>
branch nick: bzr.fix_bug_111664
timestamp: Wed 2007-06-27 20:48:10 +0200
message:
Merge with bzr.dev
added:
bzrlib/api.py api.py-20070626082640-35lspz7j0ys7a8ld-1
bzrlib/smtp_connection.py smtp_connection.py-20070618204456-nu6wag1ste4biuk2-1
bzrlib/tests/test_smtp_connection.py test_smtp_connection-20070618204509-wuyxc0r0ztrecv7e-1
doc/developers/api-versioning.txt apiversioning.txt-20070626065626-iiihgmhgkv91uphz-1
doc/developers/dirstate.txt dirstate.txt-20070618020404-cdhv0ecgrukomemg-2
doc/developers/scratch.txt scratch.txt-20070618020404-cdhv0ecgrukomemg-3
doc/developers/uncommit.txt uncommit.txt-20070621042721-4clw8ucb9u9yda2h-1
renamed:
doc/developers/performance-commit.txt => doc/developers/commit.txt performancecommit.tx-20070606061633-4y4rawskx5ejb99w-1
modified:
NEWS NEWS-20050323055033-4e00b5db738777ff
README README-20050309040720-8f368abf9f346b9d
bzrlib/__init__.py __init__.py-20050309040759-33e65acf91bbcd5d
bzrlib/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/commands.py bzr.py-20050309040720-d10f4714595cf8c3
bzrlib/commit.py commit.py-20050511101309-79ec1a0168e0e825
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/tests/HTTPTestUtil.py HTTPTestUtil.py-20050914180604-247d3aafb7a43343
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
bzrlib/tests/blackbox/test_add.py test_add.py-20060518072250-857e4f86f54a30b2
bzrlib/tests/blackbox/test_added.py test_added.py-20060119085008-6b8b90369d42a26c
bzrlib/tests/blackbox/test_ancestry.py test_ancestry.py-20060131142602-6d9524c490537e90
bzrlib/tests/blackbox/test_branch.py test_branch.py-20060524161337-noms9gmcwqqrfi8y-1
bzrlib/tests/blackbox/test_checkout.py test_checkout.py-20060211231752-a5cde67cf70af854
bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
bzrlib/tests/blackbox/test_conflicts.py test_conflicts.py-20060228151432-9723ebb925b999cf
bzrlib/tests/blackbox/test_diff.py test_diff.py-20060110203741-aa99ac93e633d971
bzrlib/tests/blackbox/test_find_merge_base.py test_find_merge_base.py-20060131142124-f9d5c94df4505b70
bzrlib/tests/blackbox/test_help.py test_help.py-20060216004358-4ee8a2a338f75a62
bzrlib/tests/blackbox/test_ignore.py test_ignore.py-20060703063225-4tm8dc2pa7wwg2t3-1
bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
bzrlib/tests/blackbox/test_init.py test_init.py-20060309032856-a292116204d86eb7
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/blackbox/test_merge.py test_merge.py-20060323225809-9bc0459c19917f41
bzrlib/tests/blackbox/test_merge_directive.py test_merge_directive-20070302012039-zh7uhy39biairtn0-1
bzrlib/tests/blackbox/test_nick.py test_nick.py-20061105141046-p7zovcsit44uj4w9-1
bzrlib/tests/blackbox/test_outside_wt.py test_outside_wt.py-20060116200058-98edd33e7db8bdde
bzrlib/tests/blackbox/test_pull.py test_pull.py-20051201144907-64959364f629947f
bzrlib/tests/blackbox/test_push.py test_push.py-20060329002750-929af230d5d22663
bzrlib/tests/blackbox/test_reconcile.py test_fix.py-20060223013051-9a188e15a5ee9451
bzrlib/tests/blackbox/test_remove.py test_remove.py-20060530011439-fika5rm84lon0goe-1
bzrlib/tests/blackbox/test_revert.py test_revert.py-20060124160917-485ce9de629c182c
bzrlib/tests/blackbox/test_revision_history.py test_revision_history.py-20060530150249-i2szwjr5uioe9ujb-1
bzrlib/tests/blackbox/test_revision_info.py test_revision_info.py-20050917162600-21dab3877aa348d7
bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
bzrlib/tests/blackbox/test_tags.py test_tags.py-20070116132048-5h4qak2cm22jlb9e-1
bzrlib/tests/blackbox/test_too_much.py blackbox.py-20050620052131-a7370d756399f615
bzrlib/tests/blackbox/test_update.py test_update.py-20060212125639-c4dad1a5c56d5919
bzrlib/tests/blackbox/test_upgrade.py test_upgrade.py-20060120060132-b41e5ed2f886ad28
bzrlib/tests/blackbox/test_versioning.py versioning.py-20050622071821-3ddf5e2e5e93c602
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_api.py testapi.py-20051027033546-6f9be2d308d18a52
bzrlib/tests/test_errors.py test_errors.py-20060210110251-41aba2deddf936a8
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tests/test_merge_core.py test_merge_core.py-20050824132511-eb99b23a0eec641b
bzrlib/tests/test_options.py testoptions.py-20051014093702-96457cfc86319a8f
bzrlib/tests/test_plugins.py plugins.py-20050622075746-32002b55e5e943e9
bzrlib/tests/test_smart_add.py test_smart_add.py-20050824235919-c60dcdb0c8e999ce
bzrlib/transport/http/__init__.py http_transport.py-20050711212304-506c5fd1059ace96
bzrlib/transport/http/_urllib2_wrappers.py _urllib2_wrappers.py-20060913231729-ha9ugi48ktx481ao-1
bzrlib/transport/remote.py ssh.py-20060608202016-c25gvf1ob7ypbus6-1
doc/configuration.txt configuration.txt-20060314161707-868350809502af01
doc/developers/index.txt index.txt-20070508041241-qznziunkg0nffhiw-1
doc/developers/performance-roadmap.txt performanceroadmap.t-20070507174912-mwv3xv517cs4sisd-2
doc/developers/performance-use-case-analysis.txt performanceusecasean-20070508045640-zneiu1yzbci574c6-2
doc/developers/profiling.txt profiling.txt-20070531045713-j15mxufywgzwdeu8-1
doc/developers/commit.txt performancecommit.tx-20070606061633-4y4rawskx5ejb99w-1
------------------------------------------------------------
revno: 2475.5.4
revision-id: amanic at gmail.com-20070623194517-9kgydu5fgjtzmu7m
parent: amanic at gmail.com-20070623175922-9dlpr6bxipcklr8g
committer: Marius Kruger <amanic at gmail.com>
branch nick: bzr.fix_bug_111664
timestamp: Sat 2007-06-23 21:45:17 +0200
message:
* Don't introduce more tests calling run_bzr with a non-list.
* Use more elegant way of ignoring new lines in test helper.
modified:
bzrlib/tests/blackbox/test_remove.py test_remove.py-20060530011439-fika5rm84lon0goe-1
bzrlib/tests/workingtree_implementations/test_remove.py test_remove.py-20070413183901-rvnp85rtc0q0sclp-1
------------------------------------------------------------
revno: 2475.5.3
revision-id: amanic at gmail.com-20070623175922-9dlpr6bxipcklr8g
parent: amanic at gmail.com-20070506014714-9vp1redn0760c8ra
parent: pqm at pqm.ubuntu.com-20070622160825-17gv0lorkzbr3x76
committer: Marius Kruger <amanic at gmail.com>
branch nick: bzr.fix_bug_111664
timestamp: Sat 2007-06-23 19:59:22 +0200
message:
merge with bzr.dev
added:
bzrlib/branchbuilder.py branchbuilder.py-20070427022007-zlxpqz2lannhk6y8-1
bzrlib/counted_lock.py counted_lock.py-20070502135927-7dk86io3ok7ctx6k-1
bzrlib/graph.py graph_walker.py-20070525030359-y852guab65d4wtn0-1
bzrlib/tests/blackbox/test_lsprof.py test_lsprof.py-20070622025641-nbsm2svy8anvj9df-1
bzrlib/tests/branch_implementations/test_sprout.py test_sprout.py-20070521151739-b8t8p7axw1h966ws-1
bzrlib/tests/test_branchbuilder.py test_branchbuilder.p-20070427022007-zlxpqz2lannhk6y8-2
bzrlib/tests/test_counted_lock.py test_counted_lock.py-20070502135927-7dk86io3ok7ctx6k-2
bzrlib/tests/test_graph.py test_graph_walker.py-20070525030405-enq4r60hhi9xrujc-1
bzrlib/tests/test_info.py test_info.py-20070320150933-m0xxm1g7xi9v6noe-1
bzrlib/tests/test_lsprof.py test_lsprof.py-20070606095601-bctdndm8yhc0cqnc-1
doc/developers/ docdevelopers-20070507164002-62r0es2b29myxges-1
doc/developers/add.txt add.txt-20070515094933-xhgz3xjc7o0edok0-2
doc/developers/annotate.txt annotate.txt-20070515142136-rq51c4kqhwrjsh8k-1
doc/developers/bundle-creation.txt bundlecreation.rst-20070527173558-rqaqxn1al7vzgcto-1
doc/developers/bundles.txt bundles.txt-20070621030528-qkjnugd7iyud6ow3-1
doc/developers/container-format.txt containerformat.txt-20070601074309-7n7w1jiyayud6xdn-1
doc/developers/gc.txt gc.txt-20070515102609-90x5kzjokrurfbke-1
doc/developers/incremental-push-pull.txt incrementalpushpull.-20070508045640-zneiu1yzbci574c6-1
doc/developers/index.txt index.txt-20070508041241-qznziunkg0nffhiw-1
doc/developers/initial-push-pull.txt initialpushpull.rst-20070527184539-wodba32mi5dehhct-1
doc/developers/merge-scaling.txt mergescaling.rst-20070527173558-rqaqxn1al7vzgcto-2
doc/developers/performance-commit.txt performancecommit.tx-20070606061633-4y4rawskx5ejb99w-1
doc/developers/performance-roadmap-rationale.txt performanceroadmapra-20070507174912-mwv3xv517cs4sisd-1
doc/developers/performance-roadmap.txt performanceroadmap.t-20070507174912-mwv3xv517cs4sisd-2
doc/developers/performance-use-case-analysis.txt performanceusecasean-20070508045640-zneiu1yzbci574c6-2
doc/developers/performance.dot performance.dot-20070527173558-rqaqxn1al7vzgcto-3
doc/developers/planned-change-integration.txt plannedchangeintegra-20070619004702-i1b3ccamjtfaoq6w-1
doc/developers/planned-performance-changes.txt plannedperformancech-20070604053752-bnjdhako613xfufb-1
doc/developers/profiling.txt profiling.txt-20070531045713-j15mxufywgzwdeu8-1
doc/developers/revert.txt revert.txt-20070515111013-grc9hgp21zxqbwbl-1
doc/shared_repository_layouts.txt shared_repository_la-20070502152030-bagewuqs18ns24o7-1
renamed:
HACKING => doc/developers/HACKING HACKING-20050805200004-2a5dc975d870f78c
bzrlib/graph.py => bzrlib/deprecated_graph.py graph.py-20050905070950-b47dce53236c5e48
bzrlib/tests/test_graph.py => bzrlib/tests/test_deprecated_graph.py testgraph.py-20050905070950-42e6c958106610fd
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/builtins.py builtins.py-20050830033751-fc01482b9ca23183
bzrlib/bundle/bundle_data.py read_changeset.py-20050619171944-c0d95aa685537640
bzrlib/bundle/commands.py __init__.py-20050617152058-1b6530d9ab85c11c
bzrlib/bundle/serializer/__init__.py __init__.py-20051118175413-86b97db0b618feef
bzrlib/bzrdir.py bzrdir.py-20060131065624-156dfea39c4387cb
bzrlib/commands.py bzr.py-20050309040720-d10f4714595cf8c3
bzrlib/commit.py commit.py-20050511101309-79ec1a0168e0e825
bzrlib/dirstate.py dirstate.py-20060728012006-d6mvoihjb3je9peu-1
bzrlib/errors.py errors.py-20050309040759-20512168c4e14fbd
bzrlib/help_topics.py help_topics.py-20060920210027-rnim90q9e0bwxvy4-1
bzrlib/info.py info.py-20050323235939-6bbfe7d9700b0b9b
bzrlib/inventory.py inventory.py-20050309040759-6648b84ca2005b37
bzrlib/knit.py knit.py-20051212171256-f056ac8f0fbe1bd9
bzrlib/log.py log.py-20050505065812-c40ce11702fe5fb1
bzrlib/lsprof.py lsprof.py-20051208071030-833790916798ceed
bzrlib/merge.py merge.py-20050513021216-953b65a438527106
bzrlib/merge_directive.py merge_directive.py-20070228184838-ja62280spt1g7f4x-1
bzrlib/missing.py missing.py-20050812153334-097f7097e2a8bcd1
bzrlib/msgeditor.py msgeditor.py-20050901111708-ef6d8de98f5d8f2f
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/repository.py rev_storage.py-20051111201905-119e9401e46257e3
bzrlib/revision.py revision.py-20050309040759-e77802c08f3999d5
bzrlib/revisionspec.py revisionspec.py-20050907152633-17567659fd5c0ddb
bzrlib/status.py status.py-20050505062338-431bfa63ec9b19e6
bzrlib/symbol_versioning.py symbol_versioning.py-20060105104851-9ecf8af605d15a80
bzrlib/tests/HTTPTestUtil.py HTTPTestUtil.py-20050914180604-247d3aafb7a43343
bzrlib/tests/__init__.py selftest.py-20050531073622-8d0e3c8845c97a64
bzrlib/tests/blackbox/__init__.py __init__.py-20051128053524-eba30d8255e08dc3
bzrlib/tests/blackbox/test_breakin.py test_breakin.py-20070424043903-qyy6zm4pj3h4sbp3-1
bzrlib/tests/blackbox/test_bundle.py test_bundle.py-20060616222707-c21c8b7ea5ef57b1
bzrlib/tests/blackbox/test_find_merge_base.py test_find_merge_base.py-20060131142124-f9d5c94df4505b70
bzrlib/tests/blackbox/test_help.py test_help.py-20060216004358-4ee8a2a338f75a62
bzrlib/tests/blackbox/test_info.py test_info.py-20060215045507-bbdd2d34efab9e0a
bzrlib/tests/blackbox/test_init.py test_init.py-20060309032856-a292116204d86eb7
bzrlib/tests/blackbox/test_log.py test_log.py-20060112090212-78f6ea560c868e24
bzrlib/tests/blackbox/test_merge_directive.py test_merge_directive-20070302012039-zh7uhy39biairtn0-1
bzrlib/tests/blackbox/test_revision_info.py test_revision_info.py-20050917162600-21dab3877aa348d7
bzrlib/tests/blackbox/test_selftest.py test_selftest.py-20060123024542-01c5f1bbcb596d78
bzrlib/tests/branch_implementations/__init__.py __init__.py-20060123013057-b12a52c3f361daf4
bzrlib/tests/branch_implementations/test_branch.py testbranch.py-20050711070244-121d632bc37d7253
bzrlib/tests/branch_implementations/test_pull.py test_pull.py-20060410103942-83c35b26657414fc
bzrlib/tests/branch_implementations/test_push.py test_push.py-20070130153159-fhfap8uoifevg30j-1
bzrlib/tests/bzrdir_implementations/__init__.py __init__.py-20060131065642-34c39b54f42dd048
bzrlib/tests/bzrdir_implementations/test_bzrdir.py test_bzrdir.py-20060131065642-0ebeca5e30e30866
bzrlib/tests/repository_implementations/test_repository.py test_repository.py-20060131092128-ad07f494f5c9d26c
bzrlib/tests/test_ancestry.py test_ancestry.py-20050913023709-69768e94848312c6
bzrlib/tests/test_commit.py test_commit.py-20050914060732-279f057f8c295434
bzrlib/tests/test_dirstate.py test_dirstate.py-20060728012006-d6mvoihjb3je9peu-2
bzrlib/tests/test_http.py testhttp.py-20051018020158-b2eef6e867c514d9
bzrlib/tests/test_lockdir.py test_lockdir.py-20060220222025-33d4221569a3d600
bzrlib/tests/test_log.py testlog.py-20050728115707-1a514809d7d49309
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tests/test_merge_directive.py test_merge_directive-20070228184838-ja62280spt1g7f4x-2
bzrlib/tests/test_missing.py test_missing.py-20051212000028-694fa4f658a81f48
bzrlib/tests/test_msgeditor.py test_msgeditor.py-20051202041359-920315ec6011ee51
bzrlib/tests/test_plugins.py plugins.py-20050622075746-32002b55e5e943e9
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_repository.py test_repository.py-20060131075918-65c555b881612f4d
bzrlib/tests/test_revert.py test_revert.py-20060828180832-fqb1v6ecpyvnlitj-1
bzrlib/tests/test_revision.py testrevision.py-20050804210559-46f5e1eb67b01289
bzrlib/tests/test_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_treebuilder.py test_treebuilder.py-20060907214856-4omn6hf1u7fvrart-2
bzrlib/tests/test_tsort.py testtsort.py-20051025073946-27da871c394d5be4
bzrlib/tests/test_urlutils.py test_urlutils.py-20060502192900-46b1f9579987cf9c
bzrlib/tests/test_versionedfile.py test_versionedfile.py-20060222045249-db45c9ed14a1c2e5
bzrlib/tests/workingtree_implementations/test_commit.py test_commit.py-20060421013633-1610ec2331c8190f
bzrlib/tests/workingtree_implementations/test_merge_from_branch.py test_merge_from_bran-20060904034200-12jxyk2zlhpufxe1-1
bzrlib/tests/workingtree_implementations/test_remove.py test_remove.py-20070413183901-rvnp85rtc0q0sclp-1
bzrlib/tests/workingtree_implementations/test_workingtree.py test_workingtree.py-20060203003124-817757d3e31444fb
bzrlib/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/remote.py ssh.py-20060608202016-c25gvf1ob7ypbus6-1
bzrlib/tsort.py tsort.py-20051025073946-7808f6aaf7d07208
bzrlib/ui/__init__.py ui.py-20050824083933-8cf663c763ba53a9
bzrlib/urlutils.py urlutils.py-20060502195429-e8a161ecf8fac004
bzrlib/version.py version.py-20060816024207-ves6ult9a11taj9t-1
bzrlib/versionedfile.py versionedfile.py-20060222045106-5039c71ee3b65490
bzrlib/weave.py knit.py-20050627021749-759c29984154256b
bzrlib/weave_commands.py weave_commands.py-20060320231507-8e9f300bffc1aa19
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
bzrlib/workingtree_4.py workingtree_4.py-20070208044105-5fgpc5j3ljlh5q6c-1
contrib/bash/bzr.simple bzr-20050503074841-dfc41af1e02111f9
doc/centralized_workflow.txt centralized_workflow-20060830194948-kspf52565xvgrlil-1
doc/default.css default.css-20060622101119-tgwtdci8z769bjb9-1
doc/index.txt index.txt-20060622101119-tgwtdci8z769bjb9-2
doc/tutorial.txt tutorial.txt-20050804190939-9dcbba2ef053bc84
setup.py setup.py-20050314065409-02f8a0a6e3f9bc70
doc/developers/HACKING HACKING-20050805200004-2a5dc975d870f78c
bzrlib/deprecated_graph.py graph.py-20050905070950-b47dce53236c5e48
bzrlib/tests/test_deprecated_graph.py testgraph.py-20050905070950-42e6c958106610fd
------------------------------------------------------------
revno: 2475.5.2
revision-id: amanic at gmail.com-20070506014714-9vp1redn0760c8ra
parent: amanic at gmail.com-20070503071126-jez3l2o6l7oemsux
committer: Marius Kruger <amanic at gmail.com>
branch nick: bzr.fix_bug_111664
timestamp: Sun 2007-05-06 03:47:14 +0200
message:
* blackbox/test_remove
- bzr rm bogus_file does not throw an exception any more.
* workingtree_implementations/test_remove
- Surround = with spaces for Alexander.
- Split out _assertRemoveErrorContainsRe which uses
assertContainsRe, to check if the error is as expected.
- Use assertRaises to check if the correct exceptions are thrown.
- Use build_tree_contents to change file contents.
- update test_remove_renamed_files doc string
- add test_remove_renamed_changed_files
- workingtree.remove( ['bogus_file'] does not throw an exception any more.
* workingtree.remove
- Fix minor typo in doctring, accidentally introduced by me recently.
- Rather use _iter_changes to detect changes as suggested by Aaron.
This is more flexible and more correct.
modified:
bzrlib/tests/blackbox/test_remove.py test_remove.py-20060530011439-fika5rm84lon0goe-1
bzrlib/tests/workingtree_implementations/test_remove.py test_remove.py-20070413183901-rvnp85rtc0q0sclp-1
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
------------------------------------------------------------
revno: 2475.5.1
revision-id: amanic at gmail.com-20070503071126-jez3l2o6l7oemsux
parent: pqm at pqm.ubuntu.com-20070501182714-71xp33bziogu3qu0
committer: Marius Kruger <amanic at gmail.com>
branch nick: bzr.rm_delete_working_file
timestamp: Thu 2007-05-03 09:11:26 +0200
message:
Fix bug and test: bzr rm refuses to delete renamed files
(Bug #111664)
modified:
bzrlib/tests/workingtree_implementations/test_remove.py test_remove.py-20070413183901-rvnp85rtc0q0sclp-1
bzrlib/workingtree.py workingtree.py-20050511021032-29b6ec0a681e02e3
=== modified file 'NEWS'
--- a/NEWS 2007-07-12 08:52:45 +0000
+++ b/NEWS 2007-07-12 09:26:21 +0000
@@ -2,7 +2,9 @@
BUGFIXES:
- * None yet ...
+ * ``bzr rm`` now does not insist on ``--force`` to delete files that
+ have been renamed but not otherwise modified. (Marius Kruger,
+ #111664)
IMPROVEMENTS:
=== modified file 'bzrlib/tests/blackbox/test_remove.py'
--- a/bzrlib/tests/blackbox/test_remove.py 2007-06-27 19:13:50 +0000
+++ b/bzrlib/tests/blackbox/test_remove.py 2007-07-12 09:26:21 +0000
@@ -64,9 +64,9 @@
' or --force to delete them regardless.'
])
self.run_bzr_error(error_regexes,
- 'remove ' + ' '.join(files_to_remove))
+ ['remove'] + files_to_remove)
#see if we can force it now
- self.run_bzr('remove --force ' + ' '.join(files_to_remove))
+ self.run_bzr(['remove', '--force'] + files_to_remove)
def test_remove_no_files_specified(self):
tree = self._make_add_and_assert_tree([])
@@ -106,8 +106,7 @@
def test_remove_invalid_files(self):
self.build_tree(files)
tree = self.make_branch_and_tree('.')
- self.run_bzr_remove_changed_files(['unknown:[.\s]*xyz[.\s]*abc/def'],
- ['.', 'xyz', 'abc/def'])
+ self.run_bzr(['remove', '.', 'xyz', 'abc/def'])
def test_remove_unversioned_files(self):
self.build_tree(files)
@@ -143,7 +142,7 @@
def test_remove_force_unversioned_files(self):
self.build_tree(files)
tree = self.make_branch_and_tree('.')
- self.run_bzr('remove --force ' + ' '.join(files),
+ self.run_bzr(['remove', '--force'] + files,
error_regexes=["deleted a", "deleted b",
"deleted b/c", "deleted d"])
self.assertFilesDeleted(files)
@@ -163,7 +162,7 @@
def test_remove_non_existing_files(self):
tree = self._make_add_and_assert_tree([])
- self.run_bzr_remove_changed_files(['unknown:[.\s]*b'], ['b'])
+ self.run_bzr(['remove', 'b'])
def test_remove_keep_non_existing_files(self):
tree = self._make_add_and_assert_tree([])
=== modified file 'bzrlib/tests/workingtree_implementations/test_remove.py'
--- a/bzrlib/tests/workingtree_implementations/test_remove.py 2007-06-15 07:01:24 +0000
+++ b/bzrlib/tests/workingtree_implementations/test_remove.py 2007-06-28 06:11:06 +0000
@@ -16,14 +16,14 @@
"""Tests for interface conformance of 'WorkingTree.remove'"""
-import re
from bzrlib.tests.workingtree_implementations import TestCaseWithWorkingTree
from bzrlib import errors, osutils
class TestRemove(TestCaseWithWorkingTree):
"""Tests WorkingTree.remove"""
- files=['a', 'b/', 'b/c', 'd/']
+ files = ['a', 'b/', 'b/c', 'd/']
+ rfiles = ['b/c', 'b', 'a', 'd']
a = ['a']
b = ['b']
b_c = ['b', 'b/c']
@@ -60,13 +60,10 @@
tree = self.getTree()
tree.add(TestRemove.files)
self.assertInWorkingTree(TestRemove.files)
- try:
- tree.remove(TestRemove.files, keep_files=False)
- self.fail('Should throw BzrRemoveChangedFilesError')
- except errors.BzrRemoveChangedFilesError, e:
- self.assertTrue(re.match('Can\'t remove changed or unknown files:'
- '.*added:.*a.*b.*b/c.*d.*',
- str(e), re.DOTALL))
+ err = self.assertRaises(errors.BzrRemoveChangedFilesError, tree.remove,
+ TestRemove.files, keep_files=False)
+ self.assertContainsRe(err.changes_as_text,
+ '(?s)added:.*a.*b/.*b/c.*d/')
self.assertInWorkingTree(TestRemove.files)
self.failUnlessExists(TestRemove.files)
@@ -75,17 +72,11 @@
tree = self.getTree()
tree.add(TestRemove.a)
tree.commit("make sure a is versioned")
- f = file('a', 'wb')
- f.write("some other new content!")
- f.close()
+ self.build_tree_contents([('a', "some other new content!")])
self.assertInWorkingTree(TestRemove.a)
- try:
- tree.remove(TestRemove.a, keep_files=False)
- self.fail('Should throw BzrRemoveChangedFilesError')
- except errors.BzrRemoveChangedFilesError, e:
- self.assertTrue(re.match('Can\'t remove changed or unknown files:'
- '.*modified:.*a.*',
- str(e), re.DOTALL))
+ err = self.assertRaises(errors.BzrRemoveChangedFilesError, tree.remove,
+ TestRemove.a, keep_files=False)
+ self.assertContainsRe(err.changes_as_text, '(?s)modified:.*a')
self.assertInWorkingTree(TestRemove.a)
self.failUnlessExists(TestRemove.a)
@@ -94,7 +85,7 @@
tree = self.getTree()
tree.add(TestRemove.files)
tree.commit("make sure files are versioned")
- for f in ['b/c', 'b', 'a', 'd']:
+ for f in TestRemove.rfiles:
osutils.delete_any(f)
self.assertInWorkingTree(TestRemove.files)
self.failIfExists(TestRemove.files)
@@ -104,6 +95,44 @@
self.assertNotInWorkingTree(TestRemove.files)
self.failIfExists(TestRemove.files)
+ def test_remove_renamed_files(self):
+ """Check that files are removed even if they are renamed."""
+ tree = self.getTree()
+ tree.add(TestRemove.files)
+ tree.commit("make sure files are versioned")
+
+ for f in TestRemove.rfiles:
+ tree.rename_one(f,f+'x')
+ rfilesx = ['bx/cx', 'bx', 'ax', 'dx']
+ self.assertInWorkingTree(rfilesx)
+ self.failUnlessExists(rfilesx)
+
+ tree.remove(rfilesx, keep_files=False)
+
+ self.assertNotInWorkingTree(rfilesx)
+ self.failIfExists(rfilesx)
+
+ def test_remove_renamed_changed_files(self):
+ """Check that files are not removed if they are renamed and changed."""
+ tree = self.getTree()
+ tree.add(TestRemove.files)
+ tree.commit("make sure files are versioned")
+
+ for f in TestRemove.rfiles:
+ tree.rename_one(f,f+'x')
+ rfilesx = ['bx/cx', 'bx', 'ax', 'dx']
+ self.build_tree_contents([('ax','changed and renamed!'),
+ ('bx/cx','changed and renamed!')])
+ self.assertInWorkingTree(rfilesx)
+ self.failUnlessExists(rfilesx)
+
+ err = self.assertRaises(errors.BzrRemoveChangedFilesError, tree.remove,
+ rfilesx, keep_files=False)
+ self.assertContainsRe(err.changes_as_text,
+ '(?s)modified:.*ax.*bx/cx')
+ self.assertInWorkingTree(rfilesx)
+ self.failUnlessExists(rfilesx)
+
def test_force_remove_changed_files(self):
"""Check that changed files are removed and deleted when forced."""
tree = self.getTree()
@@ -118,25 +147,16 @@
def test_remove_unknown_files(self):
"""Try to delete unknown files."""
tree = self.getTree()
- try:
- tree.remove(TestRemove.files, keep_files=False)
- self.fail('Should throw BzrRemoveChangedFilesError')
- except errors.BzrRemoveChangedFilesError, e:
- self.assertTrue(re.match('Can\'t remove changed or unknown files:'
- '.*unknown:.*b/c.*b.*a.*d.*',
- str(e), re.DOTALL))
+ err = self.assertRaises(errors.BzrRemoveChangedFilesError, tree.remove,
+ TestRemove.files, keep_files=False)
+ self.assertContainsRe(err.changes_as_text,
+ '(?s)unknown:.*d/.*b/c.*b/.*a.*')
def test_remove_nonexisting_files(self):
"""Try to delete non-existing files."""
tree = self.getTree()
tree.remove([''], keep_files=False)
- try:
- tree.remove(['xyz', 'abc/def'], keep_files=False)
- self.fail('Should throw BzrRemoveChangedFilesError')
- except errors.BzrRemoveChangedFilesError, e:
- self.assertTrue(re.match('Can\'t remove changed or unknown files:'
- '.*unknown:.*xyz.*abc/def.*',
- str(e), re.DOTALL))
+ tree.remove(['xyz', 'abc/def'], keep_files=False)
def test_remove_nonempty_directory(self):
"""Unchanged non-empty directories should be deleted."""
@@ -156,16 +176,11 @@
tree.commit("make sure b is versioned")
self.assertInWorkingTree(TestRemove.files)
self.failUnlessExists(TestRemove.files)
- f = file('b/my_unknown_file', 'wb')
- f.write("some content!")
- f.close()
- try:
- tree.remove(TestRemove.b, keep_files=False)
- self.fail('Should throw BzrRemoveChangedFilesError')
- except errors.BzrRemoveChangedFilesError, e:
- self.assertTrue(re.match('Can\'t remove changed or unknown files:'
- '.*unknown:.*b/my_unknown_file.*',
- str(e), re.DOTALL))
+ self.build_tree(['b/my_unknown_file'])
+ err = self.assertRaises(errors.BzrRemoveChangedFilesError, tree.remove,
+ TestRemove.b, keep_files=False)
+ self.assertContainsRe(err.changes_as_text,
+ '(?s)unknown:.*b/my_unknown_file')
self.assertInWorkingTree(TestRemove.b)
self.failUnlessExists(TestRemove.b)
@@ -184,17 +199,11 @@
tree = self.getTree()
tree.add(TestRemove.b_c)
tree.commit("make sure b and c are versioned")
- f = file('b/c', 'wb')
- f.write("some other new content!")
- f.close()
+ self.build_tree_contents([('b/c', "some other new content!")])
self.assertInWorkingTree(TestRemove.b_c)
- try:
- tree.remove(TestRemove.b, keep_files=False)
- self.fail('Should throw BzrRemoveChangedFilesError')
- except errors.BzrRemoveChangedFilesError, e:
- self.assertTrue(re.match('Can\'t remove changed or unknown files:'
- '.*modified:.*b/c.*',
- str(e), re.DOTALL))
+ err = self.assertRaises(errors.BzrRemoveChangedFilesError, tree.remove,
+ TestRemove.b, keep_files=False)
+ self.assertContainsRe(err.changes_as_text, '(?s)modified:.*b/c')
self.assertInWorkingTree(TestRemove.b_c)
self.failUnlessExists(TestRemove.b_c)
=== modified file 'bzrlib/workingtree.py'
--- a/bzrlib/workingtree.py 2007-07-04 08:08:08 +0000
+++ b/bzrlib/workingtree.py 2007-07-12 09:26:21 +0000
@@ -1762,7 +1762,7 @@
@needs_tree_write_lock
def remove(self, files, verbose=False, to_file=None, keep_files=True,
force=False):
- """Remove nominated files from the working inventor.
+ """Remove nominated files from the working inventory.
:files: File paths relative to the basedir.
:keep_files: If true, the files will also be kept.
@@ -1803,18 +1803,30 @@
recurse_directory_to_add_files(filename)
files = [f for f in new_files]
+ if len(files) == 0:
+ return # nothing to do
+
# Sort needed to first handle directory content before the directory
files.sort(reverse=True)
if not keep_files and not force:
- tree_delta = self.changes_from(self.basis_tree(),
- specific_files=files)
- for unknown_file in unknown_files_in_directory:
- tree_delta.unversioned.extend((unknown_file,))
- if bool(tree_delta.modified
- or tree_delta.added
- or tree_delta.renamed
- or tree_delta.kind_changed
- or tree_delta.unversioned):
+ has_changed_files = len(unknown_files_in_directory) > 0
+ if not has_changed_files:
+ for (file_id, path, content_change, versioned, parent_id, name,
+ kind, executable) in self._iter_changes(self.basis_tree(),
+ include_unchanged=True, require_versioned=False,
+ want_unversioned=True, specific_files=files):
+ # check if it's unknown OR changed but not deleted:
+ if (versioned == (False, False)
+ or (content_change and kind[1] != None)):
+ has_changed_files = True
+ break
+
+ if has_changed_files:
+ # make delta to show ALL applicable changes in error message.
+ tree_delta = self.changes_from(self.basis_tree(),
+ specific_files=files)
+ for unknown_file in unknown_files_in_directory:
+ tree_delta.unversioned.extend((unknown_file,))
raise errors.BzrRemoveChangedFilesError(tree_delta)
# do this before any modifications
More information about the bazaar-commits
mailing list