Rev 6025: Small TreeTransform fixes (Aaron Bentley). in file:///home/pqm/archives/thelove/bzr/%2Btrunk/
Canonical.com Patch Queue Manager
pqm at pqm.ubuntu.com
Thu Jul 14 13:52:23 UTC 2011
At file:///home/pqm/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 6025 [merge]
revision-id: pqm at pqm.ubuntu.com-20110714135221-785gbmtlr9zmlifl
parent: pqm at pqm.ubuntu.com-20110712154328-y17bvllaw2rh0997
parent: aaron at aaronbentley.com-20110713173615-90c2gw3rpzeq8cbm
committer: Canonical.com Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2011-07-14 13:52:21 +0000
message:
Small TreeTransform fixes (Aaron Bentley).
modified:
bzrlib/tests/test_merge.py testmerge.py-20050905070950-c1b5aa49ff911024
bzrlib/tests/test_transform.py test_transaction.py-20060105172520-b3ffb3946550e6c4
bzrlib/transform.py transform.py-20060105172343-dd99e54394d91687
doc/en/release-notes/bzr-2.5.txt bzr2.5.txt-20110708125756-587p0hpw7oke4h05-1
=== modified file 'bzrlib/tests/test_merge.py'
--- a/bzrlib/tests/test_merge.py 2011-07-08 07:38:03 +0000
+++ b/bzrlib/tests/test_merge.py 2011-07-13 16:02:32 +0000
@@ -137,26 +137,15 @@
def test_merge_unrelated_retains_root(self):
wt = self.make_branch_and_tree('tree')
- root_id_before_merge = wt.get_root_id()
- other_tree = self.make_branch_and_tree('other')
- # Do a commit so there is something to merge
- other_tree.commit('commit other')
- self.assertNotEquals(root_id_before_merge, other_tree.get_root_id())
- wt.merge_from_branch(other_tree.branch,
- from_revision=_mod_revision.NULL_REVISION)
- self.assertEqual(root_id_before_merge, wt.get_root_id())
-
- def test_merge_preview_unrelated_retains_root(self):
- wt = self.make_branch_and_tree('tree')
- other_tree = self.make_branch_and_tree('other')
- # Do a commit so there is something to merge
- other_tree.commit('commit other')
+ other_tree = self.make_branch_and_tree('other')
+ self.addCleanup(other_tree.lock_read().unlock)
merger = _mod_merge.Merge3Merger(wt, wt, wt.basis_tree(), other_tree,
this_branch=wt.branch,
do_merge=False)
- with merger.make_preview_transform() as tt:
- preview = tt.get_preview_tree()
- self.assertEqual(wt.get_root_id(), preview.get_root_id())
+ with transform.TransformPreview(wt) as merger.tt:
+ merger._compute_transform()
+ new_root_id = merger.tt.final_file_id(merger.tt.root)
+ self.assertEqual(wt.get_root_id(), new_root_id)
def test_create_rename(self):
"""Rename an inventory entry while creating the file"""
=== modified file 'bzrlib/tests/test_transform.py'
--- a/bzrlib/tests/test_transform.py 2011-07-06 20:52:00 +0000
+++ b/bzrlib/tests/test_transform.py 2011-07-13 15:21:48 +0000
@@ -321,6 +321,14 @@
new_trans_id = transform.new_directory('', ROOT_PARENT, 'alt-root-id')
self.assertRaises(ValueError, transform.fixup_new_roots)
+ def test_fixup_new_roots_permits_empty_tree(self):
+ transform, root = self.get_transform()
+ transform.delete_contents(root)
+ transform.unversion_file(root)
+ transform.fixup_new_roots()
+ self.assertIs(None, transform.final_kind(root))
+ self.assertIs(None, transform.final_file_id(root))
+
def test_apply_retains_root_directory(self):
# Do not attempt to delete the physical root directory, because that
# is impossible.
@@ -332,6 +340,13 @@
transform.apply)
self.assertContainsRe('TransformRenameFailed not raised', str(e))
+ def test_apply_retains_file_id(self):
+ transform, root = self.get_transform()
+ old_root_id = transform.tree_file_id(root)
+ transform.unversion_file(root)
+ transform.apply()
+ self.assertEqual(old_root_id, self.wt.get_root_id())
+
def test_hardlink(self):
self.requireFeature(HardlinkFeature)
transform, root = self.get_transform()
=== modified file 'bzrlib/transform.py'
--- a/bzrlib/transform.py 2011-07-06 20:52:00 +0000
+++ b/bzrlib/transform.py 2011-07-13 15:21:48 +0000
@@ -231,11 +231,6 @@
new_roots = [k for k, v in self._new_parent.iteritems() if v is
ROOT_PARENT]
if len(new_roots) < 1:
- if self.final_kind(self.root) is None:
- self.cancel_deletion(self.root)
- if self.final_file_id(self.root) is None:
- self.version_file(self.tree_file_id(self.root),
- self.root)
return
if len(new_roots) != 1:
raise ValueError('A tree cannot have two roots!')
@@ -1753,6 +1748,8 @@
mover.apply_deletions()
finally:
child_pb.finished()
+ if self.final_file_id(self.root) is None:
+ inventory_delta = [e for e in inventory_delta if e[0] != '']
self._tree.apply_inventory_delta(inventory_delta)
self._apply_observed_sha1s()
self._done = True
=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt 2011-07-12 14:30:06 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt 2011-07-13 17:36:15 +0000
@@ -41,6 +41,10 @@
.. Fixes for situations where bzr would previously crash or give incorrect
or undesirable results.
+* TreeTransformBase.fixup_new_roots no longer forces trees to have a root, so
+ operations that use it, like merge, can now create trees without a root.
+ (Aaron Bentley)
+
Documentation
*************
More information about the bazaar-commits
mailing list