Merge lp:~garyvdm/bzr/Bug427773 into lp:bzr

Proposed by Gary van der Merwe
Status: Merged
Approved by: John A Meinel
Approved revision: no longer in the source branch.
Merged at revision: not available
Proposed branch: lp:~garyvdm/bzr/Bug427773
Merge into: lp:bzr
Diff against target: None lines
To merge this branch: bzr merge lp:~garyvdm/bzr/Bug427773
Reviewer Review Type Date Requested Status
John A Meinel Approve
Vincent Ladeuil Approve
Review via email: mp+11601@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Vincent Ladeuil (vila) wrote :

Clap clap clap.

review: Approve
Revision history for this message
John A Meinel (jameinel) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'bzrlib/merge.py'
2--- bzrlib/merge.py 2009-08-28 05:00:33 +0000
3+++ bzrlib/merge.py 2009-09-11 13:32:55 +0000
4@@ -613,19 +613,21 @@
5 self.this_tree.lock_tree_write()
6 self.base_tree.lock_read()
7 self.other_tree.lock_read()
8- self.tt = TreeTransform(self.this_tree, self.pb)
9 try:
10- self.pp.next_phase()
11- self._compute_transform()
12- self.pp.next_phase()
13- results = self.tt.apply(no_conflicts=True)
14- self.write_modified(results)
15+ self.tt = TreeTransform(self.this_tree, self.pb)
16 try:
17- self.this_tree.add_conflicts(self.cooked_conflicts)
18- except UnsupportedOperation:
19- pass
20+ self.pp.next_phase()
21+ self._compute_transform()
22+ self.pp.next_phase()
23+ results = self.tt.apply(no_conflicts=True)
24+ self.write_modified(results)
25+ try:
26+ self.this_tree.add_conflicts(self.cooked_conflicts)
27+ except UnsupportedOperation:
28+ pass
29+ finally:
30+ self.tt.finalize()
31 finally:
32- self.tt.finalize()
33 self.other_tree.unlock()
34 self.base_tree.unlock()
35 self.this_tree.unlock()
36
37=== modified file 'bzrlib/tests/test_merge.py'
38--- bzrlib/tests/test_merge.py 2009-08-28 05:00:33 +0000
39+++ bzrlib/tests/test_merge.py 2009-09-11 13:32:55 +0000
40@@ -36,7 +36,7 @@
41 from bzrlib.osutils import pathjoin, file_kind
42 from bzrlib.tests import TestCaseWithTransport, TestCaseWithMemoryTransport
43 from bzrlib.workingtree import WorkingTree
44-
45+from bzrlib.transform import TreeTransform
46
47 class TestMerge(TestCaseWithTransport):
48 """Test appending more than one revision"""
49@@ -284,7 +284,8 @@
50 except AttributeError:
51 self.fail('tried to join a path when name was None')
52
53- def test_merge_uncommitted_otherbasis_ancestor_of_thisbasis(self):
54+
55+ def test_merge_existing_limbo_or_pending_deletion(self):
56 tree_a = self.make_branch_and_tree('a')
57 self.build_tree(['a/file_1', 'a/file_2'])
58 tree_a.add(['file_1'])
59@@ -1143,6 +1144,27 @@
60 'X\n'
61 'e\n', 'test/foo')
62
63+ def get_limbodir_deletiondir(self, wt):
64+ transform = TreeTransform(wt)
65+ limbodir = transform._limbodir
66+ deletiondir = transform._deletiondir
67+ transform.finalize()
68+ return (limbodir, deletiondir)
69+
70+ def test_merge_with_existing_limbo(self):
71+ wt = self.make_branch_and_tree('this')
72+ (limbodir, deletiondir) = self.get_limbodir_deletiondir(wt)
73+ os.mkdir(limbodir)
74+ self.assertRaises(errors.ExistingLimbo, self.do_merge, wt, wt)
75+ self.assertRaises(errors.LockError, wt.unlock)
76+
77+ def test_merge_with_pending_deletion(self):
78+ wt = self.make_branch_and_tree('this')
79+ (limbodir, deletiondir) = self.get_limbodir_deletiondir(wt)
80+ os.mkdir(deletiondir)
81+ self.assertRaises(errors.ExistingPendingDeletion, self.do_merge, wt, wt)
82+ self.assertRaises(errors.LockError, wt.unlock)
83+
84
85 class TestMerge3Merge(TestCaseWithTransport, TestMergeImplementation):
86