27
27
revision as _mod_revision,
30
from bzrlib.builtins import _merge_helper
31
30
from bzrlib.bzrdir import BzrDir
32
31
from bzrlib.bundle.apply_bundle import install_bundle, merge_bundle
33
32
from bzrlib.bundle.bundle_data import BundleTree
637
636
self.assertEqualDiff(tree1_inv, tree2_inv)
638
637
other.rename_one('sub/dir/nolastnewline.txt', 'sub/nolastnewline.txt')
639
638
other.commit('rename file', rev_id='a@cset-0-6b')
640
_merge_helper([other.basedir, -1], [None, None],
641
this_dir=self.tree1.basedir)
639
self.tree1.merge_from_branch(other.branch)
642
640
self.tree1.commit(u'Merge', rev_id='a@cset-0-7',
644
642
bundle = self.get_valid_bundle('a@cset-0-6', 'a@cset-0-7')
740
738
tt.create_file('file2', trans_id)
742
740
other.commit('modify text in another tree', rev_id='a@lmod-0-2b')
743
_merge_helper([other.basedir, -1], [None, None],
744
this_dir=self.tree1.basedir)
741
self.tree1.merge_from_branch(other.branch)
745
742
self.tree1.commit(u'Merge', rev_id='a@lmod-0-3',
747
744
self.tree1.commit(u'Merge', rev_id='a@lmod-0-4')
1067
1064
bundle = self.get_valid_bundle('null:', 'rev/id')
1066
def test_skip_file(self):
1067
"""Make sure we don't accidentally write to the wrong versionedfile"""
1068
self.tree1 = self.make_branch_and_tree('tree')
1069
self.b1 = self.tree1.branch
1070
# rev1 is not present in bundle, done by fetch
1071
self.build_tree_contents([('tree/file2', 'contents1')])
1072
self.tree1.add('file2', 'file2-id')
1073
self.tree1.commit('rev1', rev_id='reva')
1074
self.build_tree_contents([('tree/file3', 'contents2')])
1075
# rev2 is present in bundle, and done by fetch
1076
# having file1 in the bunle causes file1's versionedfile to be opened.
1077
self.tree1.add('file3', 'file3-id')
1078
self.tree1.commit('rev2')
1079
# Updating file2 should not cause an attempt to add to file1's vf
1080
target = self.tree1.bzrdir.sprout('target').open_workingtree()
1081
self.build_tree_contents([('tree/file2', 'contents3')])
1082
self.tree1.commit('rev3', rev_id='rev3')
1083
bundle = self.get_valid_bundle('reva', 'rev3')
1084
if getattr(bundle, 'get_bundle_reader', None) is None:
1085
raise TestSkipped('Bundle format cannot provide reader')
1086
# be sure that file1 comes before file2
1087
for b, m, k, r, f in bundle.get_bundle_reader().iter_records():
1090
self.assertNotEqual(f, 'file2-id')
1091
bundle.install_revisions(target.branch.repository)
1070
1094
class V08BundleTester(BundleTester, TestCaseWithTransport):
1253
1277
new_text = self.get_raw(StringIO(''.join(bundle_txt)))
1254
1278
new_text = new_text.replace('<file file_id="exe-1"',
1255
1279
'<file executable="y" file_id="exe-1"')
1256
new_text = new_text.replace('B372', 'B387')
1280
new_text = new_text.replace('B222', 'B237')
1257
1281
bundle_txt = StringIO()
1258
1282
bundle_txt.write(serializer._get_bundle_header('4'))
1259
1283
bundle_txt.write('\n')
1462
1486
'storage_kind':'fulltext'}, 'file', 'revid', 'fileid')
1464
1488
fileobj.seek(0)
1465
record_iter = v4.BundleReader(fileobj).iter_records()
1489
reader = v4.BundleReader(fileobj, stream_input=True)
1490
record_iter = reader.iter_records()
1491
record = record_iter.next()
1492
self.assertEqual((None, {'foo': 'bar', 'storage_kind': 'header'},
1493
'info', None, None), record)
1494
record = record_iter.next()
1495
self.assertEqual(("Record body", {'storage_kind': 'fulltext',
1496
'parents': ['1', '3']}, 'file', 'revid', 'fileid'),
1499
def test_roundtrip_record_memory_hungry(self):
1500
fileobj = StringIO()
1501
writer = v4.BundleWriter(fileobj)
1503
writer.add_info_record(foo='bar')
1504
writer._add_record("Record body", {'parents': ['1', '3'],
1505
'storage_kind':'fulltext'}, 'file', 'revid', 'fileid')
1508
reader = v4.BundleReader(fileobj, stream_input=False)
1509
record_iter = reader.iter_records()
1466
1510
record = record_iter.next()
1467
1511
self.assertEqual((None, {'foo': 'bar', 'storage_kind': 'header'},
1468
1512
'info', None, None), record)