49
49
self.assertEqual((1, history[0]), tree.branch.last_revision_info())
51
51
# The file should not be removed
52
self.assertPathExists('tree/two')
52
self.failUnlessExists('tree/two')
53
53
# And it should still be listed as added
54
self.assertTrue(tree.is_versioned('two'))
54
self.assertIsNot(None, tree.path2id('two'))
56
56
def test_uncommit_bound(self):
57
57
tree, history = self.make_linear_tree()
58
child = tree.controldir.sprout('child').open_workingtree()
58
child = tree.bzrdir.sprout('child').open_workingtree()
59
59
child.branch.bind(tree.branch)
61
61
self.assertEqual(history[1], tree.last_revision())
96
96
# If this tree isn't bound, local=True raises an exception
97
97
self.assertRaises(errors.LocalRequiresBoundBranch,
98
uncommit.uncommit, tree.branch, tree=tree,
101
def test_uncommit_remove_tags(self):
102
tree, history = self.make_linear_tree()
103
self.assertEqual(history[1], tree.last_revision())
104
self.assertEqual((2, history[1]), tree.branch.last_revision_info())
105
tree.branch.tags.set_tag(u"pointsatexisting", history[0])
106
tree.branch.tags.set_tag(u"pointsatremoved", history[1])
107
uncommit.uncommit(tree.branch, tree=tree)
108
self.assertEqual(history[0], tree.last_revision())
109
self.assertEqual((1, history[0]), tree.branch.last_revision_info())
111
"pointsatexisting": history[0]
112
}, tree.branch.tags.get_tag_dict())
114
def test_uncommit_remove_tags_keeps_pending_merges(self):
115
tree, history = self.make_linear_tree()
116
copy = tree.controldir.sprout('copyoftree').open_workingtree()
117
copy.commit(message='merged', rev_id=b'merged')
118
tree.merge_from_branch(copy.branch)
119
tree.branch.tags.set_tag('pointsatmerged', b'merged')
120
history.append(tree.commit('merge'))
122
b'merged', tree.branch.tags.lookup_tag('pointsatmerged'))
123
self.assertEqual(history[2], tree.last_revision())
124
self.assertEqual((3, history[2]), tree.branch.last_revision_info())
125
tree.branch.tags.set_tag(u"pointsatexisting", history[1])
126
tree.branch.tags.set_tag(u"pointsatremoved", history[2])
127
uncommit.uncommit(tree.branch, tree=tree)
128
self.assertEqual(history[1], tree.last_revision())
129
self.assertEqual((2, history[1]), tree.branch.last_revision_info())
130
self.assertEqual([history[1], b'merged'], tree.get_parent_ids())
132
"pointsatexisting": history[1],
133
"pointsatmerged": b'merged',
134
}, tree.branch.tags.get_tag_dict())
136
def test_uncommit_keep_tags(self):
137
tree, history = self.make_linear_tree()
138
self.assertEqual(history[1], tree.last_revision())
139
self.assertEqual((2, history[1]), tree.branch.last_revision_info())
140
tree.branch.tags.set_tag(u"pointsatexisting", history[0])
141
tree.branch.tags.set_tag(u"pointsatremoved", history[1])
142
uncommit.uncommit(tree.branch, tree=tree, keep_tags=True)
143
self.assertEqual(history[0], tree.last_revision())
144
self.assertEqual((1, history[0]), tree.branch.last_revision_info())
146
"pointsatexisting": history[0],
147
"pointsatremoved": history[1],
148
}, tree.branch.tags.get_tag_dict())
98
uncommit.uncommit, tree.branch, tree=tree, local=True)