Rev 1349: Fix compatibility with new versionedfiles API. in http://people.samba.org/bzr/jelmer/bzr-svn/0.4
Jelmer Vernooij
jelmer at samba.org
Thu Jun 26 14:26:07 BST 2008
At http://people.samba.org/bzr/jelmer/bzr-svn/0.4
------------------------------------------------------------
revno: 1349
revision-id: jelmer at samba.org-20080626132606-i33g9so2280g78ui
parent: jelmer at samba.org-20080626124738-97ghchm8w05apcjd
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: 0.4
timestamp: Thu 2008-06-26 15:26:06 +0200
message:
Fix compatibility with new versionedfiles API.
modified:
__init__.py __init__.py-20051008155114-eae558e6cf149e1d
fetch.py fetch.py-20060625004942-x2lfaib8ra707a8p-1
fileids.py fileids.py-20060714013623-u5iiyqqnko11grcf-1
repository.py repository.py-20060306123302-1f8c5069b3fe0265
tests/test_branch.py test_branch.py-20060508162215-74ffeb5d608f8e20
=== modified file '__init__.py'
--- a/__init__.py 2008-06-24 09:01:06 +0000
+++ b/__init__.py 2008-06-26 13:26:06 +0000
@@ -39,7 +39,7 @@
version_string = '%d.%d.%d%s%d' % version_info
__version__ = version_string
-COMPATIBLE_BZR_VERSIONS = [(1, 4), (1, 5), (1, 6)]
+COMPATIBLE_BZR_VERSIONS = [(1, 6)]
def check_bzrlib_version(desired):
"""Check that bzrlib is compatible.
=== modified file 'fetch.py'
--- a/fetch.py 2008-06-24 01:31:35 +0000
+++ b/fetch.py 2008-06-26 13:26:06 +0000
@@ -156,12 +156,6 @@
def close(self):
pass
- def _store_directory(self, file_id, parents):
- raise NotImplementedError(self._store_directory)
-
- def _get_file_data(self, file_id, revid):
- raise NotImplementedError(self._get_file_data)
-
def _finish_commit(self):
raise NotImplementedError(self._finish_commit)
@@ -171,9 +165,6 @@
def _start_revision(self):
pass
- def _store_file(self, file_id, lines, parents):
- raise NotImplementedError(self._store_file)
-
def _get_existing_id(self, old_parent_id, new_parent_id, path):
assert isinstance(path, unicode)
assert isinstance(old_parent_id, str)
@@ -218,7 +209,8 @@
self.editor.inventory[self.new_id].revision = self.editor.revid
# Only record root if the target repository supports it
- self.editor._store_directory(self.new_id, self.parent_revids)
+ self.editor.texts.add_lines((self.new_id, self.editor.revid),
+ [(self.new_id, revid) for revid in self.parent_revids], [])
if self.new_id == self.editor.inventory.root.file_id:
assert len(self.editor._premature_deletes) == 0
@@ -320,7 +312,8 @@
base_revid = self.editor.old_inventory[base_file_id].revision
file_id = self.editor._get_existing_id(self.old_id, self.new_id, path)
is_symlink = (self.editor.inventory[base_file_id].kind == 'symlink')
- file_data = self.editor._get_file_data(base_file_id, base_revid)
+ record = self.editor.texts.get_record_stream([(base_file_id, base_revid)], 'unordered', True).next()
+ file_data = record.get_bytes_as('fulltext')
if file_id == base_file_id:
file_parents = [base_revid]
else:
@@ -400,7 +393,8 @@
actual_checksum = md5_strings(lines)
assert checksum is None or checksum == actual_checksum
- self.editor._store_file(self.file_id, lines, self.file_parents)
+ self.editor.texts.add_lines((self.file_id, self.editor.revid),
+ [(self.file_id, revid) for revid in self.file_parents], lines)
assert self.is_symlink in (True, False)
@@ -433,26 +427,12 @@
"""
def __init__(self, source, target):
RevisionBuildEditor.__init__(self, source, target)
- self.weave_store = target.weave_store
+ self.texts = target.texts
def _start_revision(self):
self._write_group_active = True
self.target.start_write_group()
- def _store_directory(self, file_id, parents):
- file_weave = self.weave_store.get_weave_or_empty(file_id, self.transact)
- if not file_weave.has_version(self.revid):
- file_weave.add_lines(self.revid, parents, [])
-
- def _get_file_data(self, file_id, revid):
- file_weave = self.weave_store.get_weave_or_empty(file_id, self.transact)
- return file_weave.get_text(revid)
-
- def _store_file(self, file_id, lines, parents):
- file_weave = self.weave_store.get_weave_or_empty(file_id, self.transact)
- if not file_weave.has_version(self.revid):
- file_weave.add_lines(self.revid, parents, lines)
-
def _finish_commit(self):
(rev, signature) = self._get_revision(self.revid)
self.inventory.revision_id = self.revid
@@ -471,24 +451,6 @@
self._write_group_active = False
-class PackRevisionBuildEditor(WeaveRevisionBuildEditor):
- """Revision Build Editor for Subversion that is specific for the packs API.
- """
- def __init__(self, source, target):
- WeaveRevisionBuildEditor.__init__(self, source, target)
-
- def _add_text_to_weave(self, file_id, new_lines, parents):
- return self.target._packs._add_text_to_weave(file_id,
- self.revid, new_lines, parents, nostore_sha=None,
- random_revid=False)
-
- def _store_directory(self, file_id, parents):
- self._add_text_to_weave(file_id, [], parents)
-
- def _store_file(self, file_id, lines, parents):
- self._add_text_to_weave(file_id, lines, parents)
-
-
class CommitBuilderRevisionBuildEditor(RevisionBuildEditor):
"""Revision Build Editor for Subversion that uses the CommitBuilder API.
"""
@@ -503,8 +465,6 @@
:param repository: Repository to obtain the buildeditor for.
:return: Class object of class descending from RevisionBuildEditor
"""
- if getattr(repository, '_packs', None):
- return PackRevisionBuildEditor
return WeaveRevisionBuildEditor
=== modified file 'fileids.py'
--- a/fileids.py 2008-06-06 17:19:53 +0000
+++ b/fileids.py 2008-06-26 13:26:06 +0000
@@ -17,9 +17,10 @@
from bzrlib import ui
from bzrlib.errors import NotBranchError, RevisionNotPresent
-from bzrlib.knit import make_file_knit
+from bzrlib.knit import make_file_factory
from bzrlib.revision import NULL_REVISION
from bzrlib.trace import mutter
+from bzrlib.versionedfile import ConstantMapper
import urllib
@@ -189,7 +190,8 @@
class CachingFileIdMap(object):
"""A file id map that uses a cache."""
def __init__(self, cache_transport, actual):
- self.idmap_knit = make_file_knit("fileidmap-v%d" % FILEIDMAP_VERSION, cache_transport, 0644, create=True)
+ mapper = ConstantMapper("fileidmap-v%d" % FILEIDMAP_VERSION)
+ self.idmap_knit = make_file_factory(True, mapper)(cache_transport)
self.actual = actual
self.apply_changes = actual.apply_changes
self.repos = actual.repos
@@ -202,13 +204,13 @@
assert isinstance(id, str)
assert isinstance(created_revid, str)
- self.idmap_knit.add_lines_with_ghosts(revid, parent_revids,
+ self.idmap_knit.add_lines(revid, parent_revids,
["%s\t%s\t%s\n" % (urllib.quote(filename.encode("utf-8")), urllib.quote(_map[filename][0]),
urllib.quote(_map[filename][1])) for filename in sorted(_map.keys())])
def load(self, revid):
map = {}
- for line in self.idmap_knit.get_lines(revid):
+ for (line, version_id) in self.idmap_knit.iter_lines_added_or_present_in_keys([revid]):
(filename, id, create_revid) = line.rstrip("\n").split("\t", 3)
map[urllib.unquote(filename).decode("utf-8")] = (urllib.unquote(id), urllib.unquote(create_revid))
assert isinstance(map[urllib.unquote(filename)][0], str)
=== modified file 'repository.py'
--- a/repository.py 2008-06-24 10:00:53 +0000
+++ b/repository.py 2008-06-26 13:26:06 +0000
@@ -156,8 +156,7 @@
assert isinstance(transport, Transport)
control_files = LockableFiles(transport, '', TransportLock)
- Repository.__init__(self, SvnRepositoryFormat(), bzrdir,
- control_files, None, None, None)
+ Repository.__init__(self, SvnRepositoryFormat(), bzrdir, control_files)
self._cached_revnum = None
self._lock_mode = None
=== modified file 'tests/test_branch.py'
--- a/tests/test_branch.py 2008-06-23 02:40:47 +0000
+++ b/tests/test_branch.py 2008-06-26 13:26:06 +0000
@@ -568,15 +568,15 @@
oldbranch.generate_revision_id(6))
transaction = newbranch.repository.get_transaction()
newbranch.repository.lock_read()
- weave = newbranch.repository.weave_store.get_weave(
- tree.inventory.path2id("hosts"), transaction)
+ texts = newbranch.repository.texts
+ host_fileid = tree.inventory.path2id("hosts")
mapping = BzrSvnMappingv3FileProps(TrunkBranchingScheme())
self.assertEqual(set([
- mapping.generate_revision_id(uuid, 1, "trunk"),
- mapping.generate_revision_id(uuid, 2, "trunk"),
- mapping.generate_revision_id(uuid, 3, "trunk"),
- oldbranch.generate_revision_id(6)]),
- set(weave.versions()))
+ (host_fileid, mapping.generate_revision_id(uuid, 1, "trunk")),
+ (host_fileid, mapping.generate_revision_id(uuid, 2, "trunk")),
+ (host_fileid, mapping.generate_revision_id(uuid, 3, "trunk")),
+ (host_fileid, oldbranch.generate_revision_id(6))]),
+ set(filter(lambda (fid, rid): fid == host_fileid, texts.keys())))
newbranch.repository.unlock()
def test_check(self):
More information about the bazaar-commits
mailing list