Rev 6421: (jelmer) Add RemoteRepository.add_revision. (Jelmer Vernooij) in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
Patch Queue Manager
pqm at pqm.ubuntu.com
Tue Jan 3 17:44:03 UTC 2012
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 6421 [merge]
revision-id: pqm at pqm.ubuntu.com-20120103174403-a1g6m9e6m95515uk
parent: pqm at pqm.ubuntu.com-20120103171802-9n19bwc60t6y6cai
parent: jelmer at samba.org-20120103170829-e3dstkf2aqaeyoun
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Tue 2012-01-03 17:44:03 +0000
message:
(jelmer) Add RemoteRepository.add_revision. (Jelmer Vernooij)
modified:
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py 2012-01-03 13:47:01 +0000
+++ b/bzrlib/remote.py 2012-01-03 17:08:29 +0000
@@ -23,7 +23,7 @@
bencode,
branch,
bzrdir as _mod_bzrdir,
- config,
+ config as _mod_config,
controldir,
debug,
errors,
@@ -59,6 +59,7 @@
from bzrlib.repository import RepositoryWriteLockResult, _LazyListJoin
from bzrlib.serializer import format_registry as serializer_format_registry
from bzrlib.trace import mutter, note, warning, log_exception_quietly
+from bzrlib.versionedfile import ChunkedContentFactory, FulltextContentFactory
_DEFAULT_SEARCH_DEPTH = 100
@@ -348,7 +349,7 @@
_mod_bzrdir.BzrDirMetaFormat1._set_repository_format) #.im_func)
-class RemoteControlStore(config.IniFileStore):
+class RemoteControlStore(_mod_config.IniFileStore):
"""Control store which attempts to use HPSS calls to retrieve control store.
Note that this is specific to bzr-based formats.
@@ -378,7 +379,7 @@
def _ensure_real(self):
self.bzrdir._ensure_real()
if self._real_store is None:
- self._real_store = config.ControlStore(self.bzrdir)
+ self._real_store = _mod_config.ControlStore(self.bzrdir)
def external_url(self):
return self.bzrdir.user_url
@@ -1843,10 +1844,37 @@
delta, new_revision_id, parents, basis_inv=basis_inv,
propagate_caches=propagate_caches)
- def add_revision(self, rev_id, rev, inv=None, config=None):
- self._ensure_real()
- return self._real_repository.add_revision(
- rev_id, rev, inv=inv, config=config)
+ def add_revision(self, revision_id, rev, inv=None, config=None):
+ _mod_revision.check_not_reserved_id(revision_id)
+ if (config is not None and
+ config.get('create_signatures') == _mod_config.SIGN_ALWAYS):
+ if inv is None:
+ inv = self.get_inventory(revision_id)
+ tree = InventoryRevisionTree(self, inv, revision_id)
+ testament = _mod_testament.Testament(rev, tree)
+ plaintext = testament.as_short_text()
+ self.store_revision_signature(
+ gpg.GPGStrategy(config), plaintext, revision_id)
+ key = (revision_id,)
+ # check inventory present
+ if not self.inventories.get_parent_map([key]):
+ if inv is None:
+ raise errors.WeaveRevisionNotPresent(revision_id,
+ self.inventories)
+ else:
+ # yes, this is not suitable for adding with ghosts.
+ rev.inventory_sha1 = self.add_inventory(revision_id, inv,
+ rev.parent_ids)
+ else:
+ rev.inventory_sha1 = self.inventories.get_sha1s([key])[key]
+ if self._real_repository is not None:
+ return self._real_repository.add_revision(
+ revision_id, rev, inv, config)
+ text = self._serializer.write_revision_to_string(rev)
+ parents = tuple((parent,) for parent in rev.parent_ids)
+ self._write_group_tokens, missing_keys = self._get_sink().insert_stream(
+ [('revisions', [FulltextContentFactory(key, parents, None, text)])],
+ self._format, self._write_group_tokens)
@needs_read_lock
def get_inventory(self, revision_id):
@@ -3178,7 +3206,7 @@
return False
-class RemoteBranchStore(config.IniFileStore):
+class RemoteBranchStore(_mod_config.IniFileStore):
"""Branch store which attempts to use HPSS calls to retrieve branch store.
Note that this is specific to bzr-based formats.
@@ -3236,7 +3264,7 @@
def _ensure_real(self):
self.branch._ensure_real()
if self._real_store is None:
- self._real_store = config.BranchStore(self.branch)
+ self._real_store = _mod_config.BranchStore(self.branch)
class RemoteBranch(branch.Branch, _RpcHelper, lock._RelockDebugMixin):
@@ -3941,7 +3969,7 @@
value = section_obj.get(name, default)
except errors.UnknownSmartMethod:
value = self._vfs_get_option(name, section, default)
- for hook in config.OldConfigHooks['get']:
+ for hook in _mod_config.OldConfigHooks['get']:
hook(self, name, value)
return value
@@ -3949,8 +3977,8 @@
if len(response[0]) and response[0][0] != 'ok':
raise errors.UnexpectedSmartServerResponse(response)
lines = response[1].read_body_bytes().splitlines()
- conf = config.ConfigObj(lines, encoding='utf-8')
- for hook in config.OldConfigHooks['load']:
+ conf = _mod_config.ConfigObj(lines, encoding='utf-8')
+ for hook in _mod_config.OldConfigHooks['load']:
hook(self)
return conf
More information about the bazaar-commits
mailing list