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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
15
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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')
175
180
def test_convert_branch5_branch6(self):
176
181
branch = self.make_branch('branch', format='knit')
177
182
branch.set_revision_history(['AB', 'CD'])
180
185
branch.set_push_location('file:///IJ')
181
186
target = bzrdir.format_registry.make_bzrdir('dirstate-with-subtree')
182
187
converter = branch.bzrdir._format.get_converter(target)
183
converter.convert(branch.bzrdir, progress.DummyProgress())
188
converter.convert(branch.bzrdir, None)
184
189
new_branch = _mod_branch.Branch.open(self.get_url('branch'))
185
190
self.assertIs(new_branch.__class__, _mod_branch.BzrBranch6)
186
191
self.assertEqual('CD', new_branch.last_revision())
193
198
branch2 = self.make_branch('branch2', format='knit')
194
199
converter = branch2.bzrdir._format.get_converter(target)
195
converter.convert(branch2.bzrdir, progress.DummyProgress())
200
converter.convert(branch2.bzrdir, None)
196
201
branch2 = _mod_branch.Branch.open(self.get_url('branch'))
197
202
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())
199
214
def test_convert_knit_dirstate_empty(self):
200
215
# test that asking for an upgrade from knit to dirstate works.
201
216
tree = self.make_branch_and_tree('tree', format='knit')
202
217
target = bzrdir.format_registry.make_bzrdir('dirstate')
203
218
converter = tree.bzrdir._format.get_converter(target)
204
converter.convert(tree.bzrdir, progress.DummyProgress())
219
converter.convert(tree.bzrdir, None)
205
220
new_tree = workingtree.WorkingTree.open('tree')
206
221
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
207
222
self.assertEqual('null:', new_tree.last_revision())
214
229
tree.add(['file'], ['file-id'])
215
230
target = bzrdir.format_registry.make_bzrdir('dirstate')
216
231
converter = tree.bzrdir._format.get_converter(target)
217
converter.convert(tree.bzrdir, progress.DummyProgress())
232
converter.convert(tree.bzrdir, None)
218
233
new_tree = workingtree.WorkingTree.open('tree')
219
234
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
220
235
self.assertEqual('null:', new_tree.last_revision())
225
240
rev_id = tree.commit('first post')
226
241
target = bzrdir.format_registry.make_bzrdir('dirstate')
227
242
converter = tree.bzrdir._format.get_converter(target)
228
converter.convert(tree.bzrdir, progress.DummyProgress())
243
converter.convert(tree.bzrdir, None)
229
244
new_tree = workingtree.WorkingTree.open('tree')
230
245
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
231
246
self.assertEqual(rev_id, new_tree.last_revision())
242
257
tree.merge_from_branch(merge_tree.branch)
243
258
target = bzrdir.format_registry.make_bzrdir('dirstate')
244
259
converter = tree.bzrdir._format.get_converter(target)
245
converter.convert(tree.bzrdir, progress.DummyProgress())
260
converter.convert(tree.bzrdir, None)
246
261
new_tree = workingtree.WorkingTree.open('tree')
247
262
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
248
263
self.assertEqual(rev_id2, new_tree.last_revision())