149
149
Convert(tree.basedir, knit2_format)
150
150
tree = WorkingTree.open(tree.basedir)
151
151
branch = self.make_branch('branch', format=knit2_format)
152
branch.pull(tree.branch, stop_revision='rev1')
152
branch.pull(tree.branch, stop_revision=b'rev1')
153
153
repo = branch.repository
156
156
# Make sure fetch retrieved only what we requested
157
self.assertEqual({('tree-root', 'rev1'):()},
157
self.assertEqual({(b'tree-root', b'rev1'):()},
158
158
repo.texts.get_parent_map(
159
[('tree-root', 'rev1'), ('tree-root', 'rev2')]))
159
[(b'tree-root', b'rev1'), (b'tree-root', b'rev2')]))
162
162
branch.pull(tree.branch)
167
167
# Make sure fetch retrieved only what we requested
168
self.assertEqual({('tree-root', 'rev2'):(('tree-root', 'rev1'),)},
169
repo.texts.get_parent_map([('tree-root', 'rev2')]))
168
self.assertEqual({(b'tree-root', b'rev2'):((b'tree-root', b'rev1'),)},
169
repo.texts.get_parent_map([(b'tree-root', b'rev2')]))
245
245
wt2 = WorkingTree.open('br2').merge_from_branch(br1)
247
247
self.addCleanup(br2.unlock)
248
for rev_id, text in [('1-2', 'original from 1\n'),
249
('1-3', 'agreement\n'),
250
('2-1', 'contents in 2\n'),
251
('2-2', 'agreement\n')]:
248
for rev_id, text in [(b'1-2', b'original from 1\n'),
249
(b'1-3', b'agreement\n'),
250
(b'2-1', b'contents in 2\n'),
251
(b'2-2', b'agreement\n')]:
252
252
self.assertEqualDiff(
253
253
br2.repository.revision_tree(
254
254
rev_id).get_file_text('file'), text)
289
289
source.inventories)
291
291
self.assertTrue(target._format._fetch_uses_deltas)
292
target.fetch(source, revision_id='rev-one')
292
target.fetch(source, revision_id=b'rev-one')
293
293
self.assertEqual(('get_record_stream', [('file-id', 'rev-one')],
294
294
target._format._fetch_order, False),
295
295
self.find_get_record_stream(source.texts.calls))
329
329
source.inventories)
330
330
# XXX: This won't work in general, but for the dirstate format it does.
331
331
self.overrideAttr(target._format, '_fetch_uses_deltas', False)
332
target.fetch(source, revision_id='rev-one')
332
target.fetch(source, revision_id=b'rev-one')
333
333
self.assertEqual(('get_record_stream', [('file-id', 'rev-one')],
334
334
target._format._fetch_order, True),
335
335
self.find_get_record_stream(source.texts.calls))
373
373
record = next(source.revisions.get_record_stream([('rev-two',)],
374
374
'unordered', False))
375
375
self.assertEqual('knit-delta-gz', record.storage_kind)
376
target.fetch(tree.branch.repository, revision_id='rev-two')
376
target.fetch(tree.branch.repository, revision_id=b'rev-two')
377
377
# The record should get expanded back to a fulltext
378
378
target.lock_read()
379
379
self.addCleanup(target.unlock)
407
407
fname = 'file%03d' % (i,)
408
408
fileid = '%s-%s' % (fname, osutils.rand_chars(64))
409
409
to_add.append(('add', (fname, fileid, 'file', 'content\n')))
410
builder.build_snapshot(None, to_add, revision_id='A')
411
builder.build_snapshot(['A'], [], revision_id='B')
412
builder.build_snapshot(['A'], [], revision_id='C')
413
builder.build_snapshot(['C'], [], revision_id='D')
414
builder.build_snapshot(['D'], [], revision_id='E')
415
builder.build_snapshot(['E', 'B'], [], revision_id='F')
410
builder.build_snapshot(None, to_add, revision_id=b'A')
411
builder.build_snapshot(['A'], [], revision_id=b'B')
412
builder.build_snapshot(['A'], [], revision_id=b'C')
413
builder.build_snapshot(['C'], [], revision_id=b'D')
414
builder.build_snapshot(['D'], [], revision_id=b'E')
415
builder.build_snapshot(['E', 'B'], [], revision_id=b'F')
416
416
builder.finish_series()
417
417
source_branch = builder.get_branch()
418
source_branch.controldir.sprout('base', revision_id='B')
418
source_branch.controldir.sprout('base', revision_id=b'B')
419
419
target_branch = self.make_branch('target', format='1.6')
420
420
target_branch.set_stacked_on_url('../base')
421
421
source = source_branch.repository
437
437
target_branch.lock_write()
438
438
self.addCleanup(target_branch.unlock)
439
439
target = target_branch.repository
440
target.fetch(source, revision_id='F')
440
target.fetch(source, revision_id=b'F')
441
441
# 'C' should be expanded to a fulltext, but D and E should still be
443
443
stream = target.inventories.get_record_stream(