67
63
'mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd'])
68
64
rt = b.repository.revision_tree(rh[0])
69
65
foo_id = 'foo-20051004035605-91e788d1875603ae'
72
eq(rt.get_file_text(foo_id), 'initial contents\n')
66
eq(rt.get_file_text(foo_id), 'initial contents\n')
75
67
rt = b.repository.revision_tree(rh[1])
78
eq(rt.get_file_text(foo_id), 'new contents\n')
68
eq(rt.get_file_text(foo_id), 'new contents\n')
81
69
# check a backup was made:
82
70
transport = get_transport(b.base)
83
transport.stat('backup.bzr')
84
transport.stat('backup.bzr/README')
85
transport.stat('backup.bzr/branch-format')
86
transport.stat('backup.bzr/revision-history')
87
transport.stat('backup.bzr/merged-patches')
88
transport.stat('backup.bzr/pending-merged-patches')
89
transport.stat('backup.bzr/pending-merges')
90
transport.stat('backup.bzr/branch-name')
91
transport.stat('backup.bzr/branch-lock')
92
transport.stat('backup.bzr/inventory')
93
transport.stat('backup.bzr/stat-cache')
94
transport.stat('backup.bzr/text-store')
95
transport.stat('backup.bzr/text-store/foo-20051004035611-1591048e9dc7c2d4.gz')
96
transport.stat('backup.bzr/text-store/foo-20051004035756-4081373d897c3453.gz')
97
transport.stat('backup.bzr/inventory-store/')
98
transport.stat('backup.bzr/inventory-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz')
99
transport.stat('backup.bzr/inventory-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
100
transport.stat('backup.bzr/revision-store/')
101
transport.stat('backup.bzr/revision-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz')
102
transport.stat('backup.bzr/revision-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
71
transport.stat('.bzr.backup')
72
transport.stat('.bzr.backup/README')
73
transport.stat('.bzr.backup/branch-format')
74
transport.stat('.bzr.backup/revision-history')
75
transport.stat('.bzr.backup/merged-patches')
76
transport.stat('.bzr.backup/pending-merged-patches')
77
transport.stat('.bzr.backup/pending-merges')
78
transport.stat('.bzr.backup/branch-name')
79
transport.stat('.bzr.backup/branch-lock')
80
transport.stat('.bzr.backup/inventory')
81
transport.stat('.bzr.backup/stat-cache')
82
transport.stat('.bzr.backup/text-store')
83
transport.stat('.bzr.backup/text-store/foo-20051004035611-1591048e9dc7c2d4.gz')
84
transport.stat('.bzr.backup/text-store/foo-20051004035756-4081373d897c3453.gz')
85
transport.stat('.bzr.backup/inventory-store/')
86
transport.stat('.bzr.backup/inventory-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz')
87
transport.stat('.bzr.backup/inventory-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
88
transport.stat('.bzr.backup/revision-store/')
89
transport.stat('.bzr.backup/revision-store/mbp@sourcefrog.net-20051004035611-176b16534b086b3c.gz')
90
transport.stat('.bzr.backup/revision-store/mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd.gz')
104
92
def test_upgrade_with_ghosts(self):
105
93
"""Upgrade v0.0.4 tree containing ghost references.
173
159
['mbp@sourcefrog.net-20051004035611-176b16534b086b3c',
174
160
'mbp@sourcefrog.net-20051004035756-235f2b7dcdddd8dd'])
176
def test_convert_branch5_branch6(self):
177
branch = self.make_branch('branch', format='knit')
178
branch.set_revision_history(['AB', 'CD'])
179
branch.set_parent('file:///EF')
180
branch.set_bound_location('file:///GH')
181
branch.set_push_location('file:///IJ')
182
target = bzrdir.format_registry.make_bzrdir('dirstate-with-subtree')
183
converter = branch.bzrdir._format.get_converter(target)
184
converter.convert(branch.bzrdir, progress.DummyProgress())
185
new_branch = _mod_branch.Branch.open(self.get_url('branch'))
186
self.assertIs(new_branch.__class__, _mod_branch.BzrBranch6)
187
self.assertEqual('CD', new_branch.last_revision())
188
self.assertEqual('file:///EF', new_branch.get_parent())
189
self.assertEqual('file:///GH', new_branch.get_bound_location())
190
branch_config = new_branch.get_config()._get_branch_data_config()
191
self.assertEqual('file:///IJ',
192
branch_config.get_user_option('push_location'))
194
branch2 = self.make_branch('branch2', format='knit')
195
converter = branch2.bzrdir._format.get_converter(target)
196
converter.convert(branch2.bzrdir, progress.DummyProgress())
197
branch2 = _mod_branch.Branch.open(self.get_url('branch'))
198
self.assertIs(branch2.__class__, _mod_branch.BzrBranch6)
200
def test_convert_knit_dirstate_empty(self):
201
# test that asking for an upgrade from knit to dirstate works.
202
tree = self.make_branch_and_tree('tree', format='knit')
203
target = bzrdir.format_registry.make_bzrdir('dirstate')
204
converter = tree.bzrdir._format.get_converter(target)
205
converter.convert(tree.bzrdir, progress.DummyProgress())
206
new_tree = workingtree.WorkingTree.open('tree')
207
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
208
self.assertEqual('null:', new_tree.last_revision())
210
def test_convert_knit_dirstate_content(self):
211
# smoke test for dirstate conversion: we call dirstate primitives,
212
# and its there that the core logic is tested.
213
tree = self.make_branch_and_tree('tree', format='knit')
214
self.build_tree(['tree/file'])
215
tree.add(['file'], ['file-id'])
216
target = bzrdir.format_registry.make_bzrdir('dirstate')
217
converter = tree.bzrdir._format.get_converter(target)
218
converter.convert(tree.bzrdir, progress.DummyProgress())
219
new_tree = workingtree.WorkingTree.open('tree')
220
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
221
self.assertEqual('null:', new_tree.last_revision())
223
def test_convert_knit_one_parent_dirstate(self):
224
# test that asking for an upgrade from knit to dirstate works.
225
tree = self.make_branch_and_tree('tree', format='knit')
226
rev_id = tree.commit('first post')
227
target = bzrdir.format_registry.make_bzrdir('dirstate')
228
converter = tree.bzrdir._format.get_converter(target)
229
converter.convert(tree.bzrdir, progress.DummyProgress())
230
new_tree = workingtree.WorkingTree.open('tree')
231
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
232
self.assertEqual(rev_id, new_tree.last_revision())
233
for path in ['basis-inventory-cache', 'inventory', 'last-revision',
234
'pending-merges', 'stat-cache']:
235
self.failIfExists('tree/.bzr/checkout/' + path)
237
def test_convert_knit_merges_dirstate(self):
238
tree = self.make_branch_and_tree('tree', format='knit')
239
rev_id = tree.commit('first post')
240
merge_tree = tree.bzrdir.sprout('tree2').open_workingtree()
241
rev_id2 = tree.commit('second post')
242
rev_id3 = merge_tree.commit('second merge post')
243
tree.merge_from_branch(merge_tree.branch)
244
target = bzrdir.format_registry.make_bzrdir('dirstate')
245
converter = tree.bzrdir._format.get_converter(target)
246
converter.convert(tree.bzrdir, progress.DummyProgress())
247
new_tree = workingtree.WorkingTree.open('tree')
248
self.assertIs(new_tree.__class__, workingtree_4.WorkingTree4)
249
self.assertEqual(rev_id2, new_tree.last_revision())
250
self.assertEqual([rev_id2, rev_id3], new_tree.get_parent_ids())
251
for path in ['basis-inventory-cache', 'inventory', 'last-revision',
252
'pending-merges', 'stat-cache']:
253
self.failIfExists('tree/.bzr/checkout/' + path)
256
163
_upgrade1_template = \
258
165
('foo', 'new contents\n'),
261
'This is a Bazaar control directory.\n'
262
'Do not change any files in this directory.\n'
263
'See http://bazaar-vcs.org/ for more information about Bazaar.\n'),
168
'This is a Bazaar-NG control directory.\nDo not change any files in this directory.\n'),
264
169
('.bzr/branch-format', 'Bazaar-NG branch, format 0.0.4\n'),
265
170
('.bzr/revision-history',
266
171
'mbp@sourcefrog.net-20051004035611-176b16534b086b3c\n'