555
552
def test_fetch_combines_groups(self):
556
553
builder = self.make_branch_builder('source', format='2a')
557
554
builder.start_series()
558
builder.build_snapshot('1', None, [
559
('add', ('', 'root-id', 'directory', '')),
560
('add', ('file', 'file-id', 'file', 'content\n'))])
561
builder.build_snapshot('2', ['1'], [
562
('modify', ('file-id', 'content-2\n'))])
563
builder.finish_series()
564
source = builder.get_branch()
565
target = self.make_repository('target', format='2a')
566
target.fetch(source.repository)
568
self.addCleanup(target.unlock)
569
details = target.texts._index.get_build_details(
570
[('file-id', '1',), ('file-id', '2',)])
571
file_1_details = details[('file-id', '1')]
572
file_2_details = details[('file-id', '2')]
573
# The index, and what to read off disk, should be the same for both
574
# versions of the file.
575
self.assertEqual(file_1_details[0][:3], file_2_details[0][:3])
577
def test_fetch_combines_groups(self):
578
builder = self.make_branch_builder('source', format='2a')
579
builder.start_series()
580
builder.build_snapshot('1', None, [
581
('add', ('', 'root-id', 'directory', '')),
582
('add', ('file', 'file-id', 'file', 'content\n'))])
583
builder.build_snapshot('2', ['1'], [
584
('modify', ('file-id', 'content-2\n'))])
585
builder.finish_series()
586
source = builder.get_branch()
587
target = self.make_repository('target', format='2a')
588
target.fetch(source.repository)
590
self.addCleanup(target.unlock)
591
details = target.texts._index.get_build_details(
592
[('file-id', '1',), ('file-id', '2',)])
593
file_1_details = details[('file-id', '1')]
594
file_2_details = details[('file-id', '2')]
595
# The index, and what to read off disk, should be the same for both
596
# versions of the file.
597
self.assertEqual(file_1_details[0][:3], file_2_details[0][:3])
599
def test_fetch_combines_groups(self):
600
builder = self.make_branch_builder('source', format='2a')
601
builder.start_series()
602
builder.build_snapshot('1', None, [
603
('add', ('', 'root-id', 'directory', '')),
604
('add', ('file', 'file-id', 'file', 'content\n'))])
605
builder.build_snapshot('2', ['1'], [
606
('modify', ('file-id', 'content-2\n'))])
607
builder.finish_series()
608
source = builder.get_branch()
609
target = self.make_repository('target', format='2a')
610
target.fetch(source.repository)
612
self.addCleanup(target.unlock)
613
details = target.texts._index.get_build_details(
614
[('file-id', '1',), ('file-id', '2',)])
615
file_1_details = details[('file-id', '1')]
616
file_2_details = details[('file-id', '2')]
555
builder.build_snapshot(None, [
556
('add', ('', b'root-id', 'directory', '')),
557
('add', ('file', b'file-id', 'file', b'content\n'))],
559
builder.build_snapshot([b'1'], [
560
('modify', ('file', b'content-2\n'))],
562
builder.finish_series()
563
source = builder.get_branch()
564
target = self.make_repository('target', format='2a')
565
target.fetch(source.repository)
567
self.addCleanup(target.unlock)
568
details = target.texts._index.get_build_details(
569
[(b'file-id', b'1',), (b'file-id', b'2',)])
570
file_1_details = details[(b'file-id', b'1')]
571
file_2_details = details[(b'file-id', b'2')]
572
# The index, and what to read off disk, should be the same for both
573
# versions of the file.
574
self.assertEqual(file_1_details[0][:3], file_2_details[0][:3])
576
def test_fetch_combines_groups(self):
577
builder = self.make_branch_builder('source', format='2a')
578
builder.start_series()
579
builder.build_snapshot(None, [
580
('add', ('', b'root-id', 'directory', '')),
581
('add', ('file', b'file-id', 'file', 'content\n'))],
583
builder.build_snapshot([b'1'], [
584
('modify', ('file', b'content-2\n'))],
586
builder.finish_series()
587
source = builder.get_branch()
588
target = self.make_repository('target', format='2a')
589
target.fetch(source.repository)
591
self.addCleanup(target.unlock)
592
details = target.texts._index.get_build_details(
593
[(b'file-id', b'1',), (b'file-id', b'2',)])
594
file_1_details = details[(b'file-id', b'1')]
595
file_2_details = details[(b'file-id', b'2')]
596
# The index, and what to read off disk, should be the same for both
597
# versions of the file.
598
self.assertEqual(file_1_details[0][:3], file_2_details[0][:3])
600
def test_fetch_combines_groups(self):
601
builder = self.make_branch_builder('source', format='2a')
602
builder.start_series()
603
builder.build_snapshot(None, [
604
('add', ('', b'root-id', 'directory', '')),
605
('add', ('file', b'file-id', 'file', 'content\n'))],
607
builder.build_snapshot([b'1'], [
608
('modify', ('file', b'content-2\n'))],
610
builder.finish_series()
611
source = builder.get_branch()
612
target = self.make_repository('target', format='2a')
613
target.fetch(source.repository)
615
self.addCleanup(target.unlock)
616
details = target.texts._index.get_build_details(
617
[(b'file-id', b'1',), (b'file-id', b'2',)])
618
file_1_details = details[(b'file-id', b'1')]
619
file_2_details = details[(b'file-id', b'2')]
617
620
# The index, and what to read off disk, should be the same for both
618
621
# versions of the file.
619
622
self.assertEqual(file_1_details[0][:3], file_2_details[0][:3])
691
694
# We have to build a fairly large tree, so that we are sure the chk
692
695
# pages will have split into multiple pages.
693
entries = [('add', ('', 'a-root-id', 'directory', None))]
696
entries = [('add', ('', b'a-root-id', 'directory', None))]
694
697
for i in 'abcdefghijklmnopqrstuvwxyz123456789':
695
698
for j in 'abcdefghijklmnopqrstuvwxyz123456789':
700
fid = fname.encode('utf-8') + b'-id'
698
701
content = 'content for %s\n' % (fname,)
699
702
entries.append(('add', (fname, fid, 'file', content)))
700
703
source_builder.start_series()
701
source_builder.build_snapshot('rev-1', None, entries)
704
source_builder.build_snapshot(None, entries, revision_id=b'rev-1')
702
705
# Now change a few of them, so we get a few new pages for the second
704
source_builder.build_snapshot('rev-2', ['rev-1'], [
705
('modify', ('aa-id', 'new content for aa-id\n')),
706
('modify', ('cc-id', 'new content for cc-id\n')),
707
('modify', ('zz-id', 'new content for zz-id\n')),
707
source_builder.build_snapshot([b'rev-1'], [
708
('modify', ('aa', b'new content for aa-id\n')),
709
('modify', ('cc', b'new content for cc-id\n')),
710
('modify', ('zz', b'new content for zz-id\n')),
711
], revision_id=b'rev-2')
709
712
source_builder.finish_series()
710
713
source_branch = source_builder.get_branch()
711
714
source_branch.lock_read()
856
860
self.assertParentIds([], rev_set)
858
862
def test_not_null_set(self):
859
self.builder.build_snapshot('revid1', None, [])
863
self.builder.build_snapshot(None, [], revision_id='revid1')
860
864
rev_set = [_mod_revision.NULL_REVISION]
861
865
self.assertParentIds([], rev_set)
863
867
def test_ghost(self):
864
self.builder.build_snapshot('revid1', None, [])
868
self.builder.build_snapshot(None, [], revision_id='revid1')
865
869
rev_set = ['ghost', 'revid1']
866
870
self.assertParentIds(['initial'], rev_set)
868
872
def test_ghost_parent(self):
869
self.builder.build_snapshot('revid1', None, [])
870
self.builder.build_snapshot('revid2', ['revid1', 'ghost'], [])
873
self.builder.build_snapshot(None, [], revision_id='revid1')
874
self.builder.build_snapshot(['revid1', 'ghost'], [], revision_id='revid2')
871
875
rev_set = ['revid2', 'revid1']
872
876
self.assertParentIds(['ghost', 'initial'], rev_set)
874
878
def test_righthand_parent(self):
875
self.builder.build_snapshot('revid1', None, [])
876
self.builder.build_snapshot('revid2a', ['revid1'], [])
877
self.builder.build_snapshot('revid2b', ['revid1'], [])
878
self.builder.build_snapshot('revid3', ['revid2a', 'revid2b'], [])
879
self.builder.build_snapshot(None, [], revision_id='revid1')
880
self.builder.build_snapshot(['revid1'], [], revision_id='revid2a')
881
self.builder.build_snapshot(['revid1'], [], revision_id='revid2b')
882
self.builder.build_snapshot(['revid2a', 'revid2b'], [],
883
revision_id='revid3')
879
884
rev_set = ['revid3', 'revid2a']
880
885
self.assertParentIds(['revid1', 'revid2b'], rev_set)
1467
1472
def test_pack_optimizes_pack_order(self):
1468
1473
builder = self.make_branch_builder('.', format="1.9")
1469
1474
builder.start_series()
1470
builder.build_snapshot('A', None, [
1475
builder.build_snapshot(None, [
1471
1476
('add', ('', 'root-id', 'directory', None)),
1472
('add', ('f', 'f-id', 'file', 'content\n'))])
1473
builder.build_snapshot('B', ['A'],
1474
[('modify', ('f-id', 'new-content\n'))])
1475
builder.build_snapshot('C', ['B'],
1476
[('modify', ('f-id', 'third-content\n'))])
1477
builder.build_snapshot('D', ['C'],
1478
[('modify', ('f-id', 'fourth-content\n'))])
1477
('add', ('f', 'f-id', 'file', 'content\n'))],
1479
builder.build_snapshot(['A'],
1480
[('modify', ('f', 'new-content\n'))],
1482
builder.build_snapshot(['B'],
1483
[('modify', ('f', 'third-content\n'))],
1485
builder.build_snapshot(['C'],
1486
[('modify', ('f', 'fourth-content\n'))],
1479
1488
b = builder.get_branch()
1481
1490
builder.finish_series()