13
13
# You should have received a copy of the GNU General Public License
14
14
# along with this program; if not, write to the Free Software
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
17
"""Tests for upgrade of old trees.
19
This file contains canned versions of some old trees, which are instantiated
19
This file contains canned versions of some old trees, which are instantiated
20
20
and then upgraded to the new format."""
22
22
# TODO queue for upgrade:
105
105
"""Upgrade v0.0.4 tree containing ghost references.
107
107
That is, some of the parents of revisions mentioned in the branch
108
aren't present in the branch's storage.
108
aren't present in the branch's storage.
110
This shouldn't normally happen in branches created entirely in
110
This shouldn't normally happen in branches created entirely in
111
111
bzr, but can happen in branches imported from baz and arch, or from
112
other systems, where the importer knows about a revision but not
112
other systems, where the importer knows about a revision but not
114
114
eq = self.assertEquals
115
115
self.build_tree_contents(_ghost_template)
125
125
old_repodir = bzrlib.bzrdir.BzrDir.open_unsupported('.')
126
126
old_repo_format = old_repodir.open_repository()._format
128
# this is the path to the literal file. As format changes
128
# this is the path to the literal file. As format changes
129
129
# occur it needs to be updated. FIXME: ask the store for the
131
131
repo = bzrlib.repository.Repository.open('.')
132
132
# it should have changed the format
133
133
self.assertNotEqual(old_repo_format.__class__, repo._format.__class__)
134
# and we should be able to read the names for the file id
134
# and we should be able to read the names for the file id
135
135
# 'dir-20051005095101-da1441ea3fa6917a'
137
137
self.addCleanup(repo.unlock)
172
172
['mbp@sourcefrog.net-20051004035611-176b16534b086b3c',
173
173
'mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd'])
175
def test_upgrade_rich_root(self):
176
tree = self.make_branch_and_tree('tree', format='rich-root')
177
rev_id = tree.commit('first post')
180
175
def test_convert_branch5_branch6(self):
181
176
branch = self.make_branch('branch', format='knit')
182
177
branch.set_revision_history(['AB', 'CD'])
185
180
branch.set_push_location('file:///IJ')
186
181
target = bzrdir.format_registry.make_bzrdir('dirstate-with-subtree')
187
182
converter = branch.bzrdir._format.get_converter(target)
188
converter.convert(branch.bzrdir, None)
183
converter.convert(branch.bzrdir, progress.DummyProgress())
189
184
new_branch = _mod_branch.Branch.open(self.get_url('branch'))
190
185
self.assertIs(new_branch.__class__, _mod_branch.BzrBranch6)
191
186
self.assertEqual('CD', new_branch.last_revision())
198
193
branch2 = self.make_branch('branch2', format='knit')
199
194
converter = branch2.bzrdir._format.get_converter(target)
200
converter.convert(branch2.bzrdir, None)
195
converter.convert(branch2.bzrdir, progress.DummyProgress())
201
196
branch2 = _mod_branch.Branch.open(self.get_url('branch'))
202
197
self.assertIs(branch2.__class__, _mod_branch.BzrBranch6)
204
def test_convert_branch7_branch8(self):
205
branch = self.make_branch('branch', format='1.9')
206
target = bzrdir.format_registry.make_bzrdir('1.9')
207
target.set_branch_format(_mod_branch.BzrBranchFormat8())
208
converter = branch.bzrdir._format.get_converter(target)
209
converter.convert(branch.bzrdir, None)
210
branch = _mod_branch.Branch.open(self.get_url('branch'))
211
self.assertIs(branch.__class__, _mod_branch.BzrBranch8)
212
self.assertEqual({}, branch._get_all_reference_info())
214
199
def test_convert_knit_dirstate_empty(self):
215
200
# test that asking for an upgrade from knit to dirstate works.
216
201
tree = self.make_branch_and_tree('tree', format='knit')
217
202
target = bzrdir.format_registry.make_bzrdir('dirstate')
218
203
converter = tree.bzrdir._format.get_converter(target)
219
converter.convert(tree.bzrdir, None)
204
converter.convert(tree.bzrdir, progress.DummyProgress())
220
205
new_tree = workingtree.WorkingTree.open('tree')
221
206
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
222
207
self.assertEqual('null:', new_tree.last_revision())
229
214
tree.add(['file'], ['file-id'])
230
215
target = bzrdir.format_registry.make_bzrdir('dirstate')
231
216
converter = tree.bzrdir._format.get_converter(target)
232
converter.convert(tree.bzrdir, None)
217
converter.convert(tree.bzrdir, progress.DummyProgress())
233
218
new_tree = workingtree.WorkingTree.open('tree')
234
219
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
235
220
self.assertEqual('null:', new_tree.last_revision())
240
225
rev_id = tree.commit('first post')
241
226
target = bzrdir.format_registry.make_bzrdir('dirstate')
242
227
converter = tree.bzrdir._format.get_converter(target)
243
converter.convert(tree.bzrdir, None)
228
converter.convert(tree.bzrdir, progress.DummyProgress())
244
229
new_tree = workingtree.WorkingTree.open('tree')
245
230
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
246
231
self.assertEqual(rev_id, new_tree.last_revision())
257
242
tree.merge_from_branch(merge_tree.branch)
258
243
target = bzrdir.format_registry.make_bzrdir('dirstate')
259
244
converter = tree.bzrdir._format.get_converter(target)
260
converter.convert(tree.bzrdir, None)
245
converter.convert(tree.bzrdir, progress.DummyProgress())
261
246
new_tree = workingtree.WorkingTree.open('tree')
262
247
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
263
248
self.assertEqual(rev_id2, new_tree.last_revision())