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