Merge lp:~garyvdm/bzr/427773-2.0-unlock-when-limbo into lp:bzr/2.0

Proposed by Gary van der Merwe
Status: Merged
Merged at revision: not available
Proposed branch: lp:~garyvdm/bzr/427773-2.0-unlock-when-limbo
Merge into: lp:bzr/2.0
Diff against target: None lines
To merge this branch: bzr merge lp:~garyvdm/bzr/427773-2.0-unlock-when-limbo
Reviewer Review Type Date Requested Status
Vincent Ladeuil Approve
Bazaar Developers Pending
Martin Pool Pending
Review via email: mp+11776@code.launchpad.net

This proposal supersedes a proposal from 2009-09-11.

To post a comment you must log in.
Revision history for this message
Gary van der Merwe (garyvdm) wrote : Posted in a previous version of this proposal

Fix for Bug 427773.

This has allready been merged into bzr.dev, but I think it should be backported to 2.0 because it is a simple bug fix.

I'm not sure if it will go into 2.0.0final or 2.0.1. I'll let you decide. Hence I was not sure where to put it in NEWS.

Revision history for this message
Vincent Ladeuil (vila) wrote :

Approved by poolie in the bug comments, I'll merge.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'NEWS'
2--- NEWS 2009-09-10 06:47:42 +0000
3+++ NEWS 2009-09-11 21:19:32 +0000
4@@ -2,6 +2,16 @@
5 Bazaar Release Notes
6 ####################
7
8+bzr 2.0.1
9+##########
10+
11+Bug Fixes
12+*********
13+
14+* Make sure that we unlock the tree if we fail to create a TreeTransform
15+ object when doing a merge, and there is limbo, or pending-deletions
16+ directory. (Gary van der Merwe, #427773)
17+
18
19 bzr 2.0rc2
20 ##########
21
22=== modified file 'bzrlib/merge.py'
23--- bzrlib/merge.py 2009-09-10 06:32:42 +0000
24+++ bzrlib/merge.py 2009-09-11 21:19:32 +0000
25@@ -613,19 +613,21 @@
26 self.this_tree.lock_tree_write()
27 self.base_tree.lock_read()
28 self.other_tree.lock_read()
29- self.tt = TreeTransform(self.this_tree, self.pb)
30 try:
31- self.pp.next_phase()
32- self._compute_transform()
33- self.pp.next_phase()
34- results = self.tt.apply(no_conflicts=True)
35- self.write_modified(results)
36+ self.tt = TreeTransform(self.this_tree, self.pb)
37 try:
38- self.this_tree.add_conflicts(self.cooked_conflicts)
39- except UnsupportedOperation:
40- pass
41+ self.pp.next_phase()
42+ self._compute_transform()
43+ self.pp.next_phase()
44+ results = self.tt.apply(no_conflicts=True)
45+ self.write_modified(results)
46+ try:
47+ self.this_tree.add_conflicts(self.cooked_conflicts)
48+ except UnsupportedOperation:
49+ pass
50+ finally:
51+ self.tt.finalize()
52 finally:
53- self.tt.finalize()
54 self.other_tree.unlock()
55 self.base_tree.unlock()
56 self.this_tree.unlock()
57
58=== modified file 'bzrlib/tests/test_merge.py'
59--- bzrlib/tests/test_merge.py 2009-09-10 06:32:42 +0000
60+++ bzrlib/tests/test_merge.py 2009-09-15 11:22:27 +0000
61@@ -36,7 +36,7 @@
62 from bzrlib.osutils import pathjoin, file_kind
63 from bzrlib.tests import TestCaseWithTransport, TestCaseWithMemoryTransport
64 from bzrlib.workingtree import WorkingTree
65-
66+from bzrlib.transform import TreeTransform
67
68 class TestMerge(TestCaseWithTransport):
69 """Test appending more than one revision"""
70@@ -1143,6 +1143,27 @@
71 'X\n'
72 'e\n', 'test/foo')
73
74+ def get_limbodir_deletiondir(self, wt):
75+ transform = TreeTransform(wt)
76+ limbodir = transform._limbodir
77+ deletiondir = transform._deletiondir
78+ transform.finalize()
79+ return (limbodir, deletiondir)
80+
81+ def test_merge_with_existing_limbo(self):
82+ wt = self.make_branch_and_tree('this')
83+ (limbodir, deletiondir) = self.get_limbodir_deletiondir(wt)
84+ os.mkdir(limbodir)
85+ self.assertRaises(errors.ExistingLimbo, self.do_merge, wt, wt)
86+ self.assertRaises(errors.LockError, wt.unlock)
87+
88+ def test_merge_with_pending_deletion(self):
89+ wt = self.make_branch_and_tree('this')
90+ (limbodir, deletiondir) = self.get_limbodir_deletiondir(wt)
91+ os.mkdir(deletiondir)
92+ self.assertRaises(errors.ExistingPendingDeletion, self.do_merge, wt, wt)
93+ self.assertRaises(errors.LockError, wt.unlock)
94+
95
96 class TestMerge3Merge(TestCaseWithTransport, TestMergeImplementation):
97

Subscribers

People subscribed via source and target branches