90
91
a = BzrDirMetaFormat1().initialize('a')
91
92
a.create_repository()
93
t = a.create_workingtree()
97
b = t.bzrdir.sprout('b').open_branch()
94
t_a = a.create_workingtree()
95
t_a.commit('commit 1')
96
t_a.commit('commit 2')
97
t_a.commit('commit 3')
98
b = t_a.bzrdir.sprout('b').open_branch()
99
100
uncommit.uncommit(b)
100
t.set_last_revision(t.branch.last_revision())
101
101
self.assertEqual(len(b.revision_history()), 2)
102
self.assertEqual(len(t.branch.revision_history()), 2)
103
t.commit('commit 3b')
102
self.assertEqual(len(t_a.branch.revision_history()), 2)
103
# update A's tree to not have the uncomitted revision referenced.
105
t_a.commit('commit 3b')
104
106
self.assertRaises(BoundBranchOutOfDate, uncommit.uncommit, b)
106
108
uncommit.uncommit(b)
108
110
def test_uncommit_revision(self):
130
132
tree2.commit('unchanged', rev_id='b3')
131
133
tree2.commit('unchanged', rev_id='b4')
133
wt.branch.fetch(tree2.branch)
134
wt.set_pending_merges(['b4'])
135
self.merge(tree2.branch, wt)
135
136
wt.commit('merge b4', rev_id='a3')
138
self.assertEqual(['a3'], wt.get_parent_ids())
141
out, err = self.run_bzr('uncommit', '--force')
143
self.assertEqual(['a2', 'b4'], wt.get_parent_ids())
145
def test_uncommit_pending_merge(self):
146
wt = self.create_simple_tree()
147
tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
148
tree2.commit('unchanged', rev_id='b3')
150
wt.branch.fetch(tree2.branch)
151
wt.set_pending_merges(['b3'])
154
out, err = self.run_bzr('uncommit', '--force')
155
self.assertEqual('a1', wt.last_revision())
156
self.assertEqual(['b3'], wt.pending_merges())
158
def test_uncommit_multiple_merge(self):
159
wt = self.create_simple_tree()
161
tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
163
tree2.commit('unchanged', rev_id='b3')
165
self.merge(tree2.branch, wt)
166
wt.commit('merge b3', rev_id='a3')
168
tree2.commit('unchanged', rev_id='b4')
170
self.merge(tree2.branch, wt)
171
wt.commit('merge b4', rev_id='a4')
173
self.assertEqual(['a4'], wt.get_parent_ids())
176
out, err = self.run_bzr('uncommit', '--force', '-r', '2')
178
self.assertEqual(['a2', 'b3', 'b4'], wt.get_parent_ids())
180
def test_uncommit_merge_plus_pending(self):
181
wt = self.create_simple_tree()
183
tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
185
tree2.commit('unchanged', rev_id='b3')
186
wt.branch.fetch(tree2.branch)
187
wt.set_pending_merges(['b3'])
188
wt.commit('merge b3', rev_id='a3')
190
tree2.commit('unchanged', rev_id='b4')
191
wt.branch.fetch(tree2.branch)
192
wt.set_pending_merges(['b4'])
137
194
self.assertEqual('a3', wt.last_revision())
138
self.assertEqual([], wt.pending_merges())
141
out, err = self.run_bzr('uncommit', '--force')
143
self.assertEqual('a2', wt.last_revision())
144
195
self.assertEqual(['b4'], wt.pending_merges())
146
def test_uncommit_multiple_merge(self):
147
wt = self.create_simple_tree()
149
tree2 = wt.bzrdir.sprout('tree2').open_workingtree()
151
tree2.commit('unchanged', rev_id='b3')
152
wt.branch.fetch(tree2.branch)
153
wt.set_pending_merges(['b3'])
154
wt.commit('merge b3', rev_id='a3')
156
tree2.commit('unchanged', rev_id='b4')
157
wt.branch.fetch(tree2.branch)
158
wt.set_pending_merges(['b4'])
159
wt.commit('merge b4', rev_id='a4')
161
self.assertEqual('a4', wt.last_revision())
162
self.assertEqual([], wt.pending_merges())
165
198
out, err = self.run_bzr('uncommit', '--force', '-r', '2')
177
210
tree2.commit('unchanged', rev_id='b3')
178
211
tree3.commit('unchanged', rev_id='c3')
179
wt.branch.fetch(tree2.branch)
180
wt.branch.fetch(tree3.branch)
181
wt.set_pending_merges(['b3', 'c3'])
213
self.merge(tree2.branch, wt)
214
self.merge(tree3.branch, wt)
182
215
wt.commit('merge b3, c3', rev_id='a3')
184
217
tree2.commit('unchanged', rev_id='b4')
185
218
tree3.commit('unchanged', rev_id='c4')
186
wt.branch.fetch(tree2.branch)
187
wt.branch.fetch(tree3.branch)
188
wt.set_pending_merges(['c4', 'b4'])
220
self.merge(tree3.branch, wt)
221
self.merge(tree2.branch, wt)
189
222
wt.commit('merge b4, c4', rev_id='a4')
191
self.assertEqual('a4', wt.last_revision())
192
self.assertEqual([], wt.pending_merges())
224
self.assertEqual(['a4'], wt.get_parent_ids())
195
227
out, err = self.run_bzr('uncommit', '--force', '-r', '2')
197
self.assertEqual('a2', wt.last_revision())
198
self.assertEqual(['b3', 'c3', 'c4', 'b4'], wt.pending_merges())
229
self.assertEqual(['a2', 'b3', 'c3', 'c4', 'b4'], wt.get_parent_ids())