Rev 6403: (jelmer) Use real commit object in RemoteRepository.get_commit_builder. in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/

Patch Queue Manager pqm at pqm.ubuntu.com
Thu Dec 22 16:44:41 UTC 2011


At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/

------------------------------------------------------------
revno: 6403 [merge]
revision-id: pqm at pqm.ubuntu.com-20111222164440-bz1x4fw3k6aweupn
parent: pqm at pqm.ubuntu.com-20111221215631-coxvalt3phw8jaza
parent: jelmer at samba.org-20111222161831-4c2mj8x89741y8x2
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Thu 2011-12-22 16:44:40 +0000
message:
  (jelmer) Use real commit object in RemoteRepository.get_commit_builder.
   (Jelmer Vernooij)
modified:
  bzrlib/remote.py               remote.py-20060720103555-yeeg2x51vn0rbtdp-1
  bzrlib/tests/blackbox/test_commit.py test_commit.py-20060212094538-ae88fc861d969db0
  bzrlib/tests/per_repository/test_commit_builder.py test_commit_builder.py-20060606110838-76e3ra5slucqus81-1
=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py	2011-12-18 12:46:49 +0000
+++ b/bzrlib/remote.py	2011-12-22 16:18:31 +0000
@@ -1211,6 +1211,8 @@
         if response != ('ok', ):
             raise errors.UnexpectedSmartServerResponse(response)
         self._write_group_tokens = None
+        # Refresh data after writing to the repository.
+        self.refresh_data()
 
     def resume_write_group(self, tokens):
         if self._real_repository:
@@ -1765,15 +1767,32 @@
     def get_commit_builder(self, branch, parents, config, timestamp=None,
                            timezone=None, committer=None, revprops=None,
                            revision_id=None, lossy=False):
-        # FIXME: It ought to be possible to call this without immediately
-        # triggering _ensure_real.  For now it's the easiest thing to do.
-        self._ensure_real()
-        real_repo = self._real_repository
-        builder = real_repo.get_commit_builder(branch, parents,
-                config, timestamp=timestamp, timezone=timezone,
-                committer=committer, revprops=revprops,
-                revision_id=revision_id, lossy=lossy)
-        return builder
+        """Obtain a CommitBuilder for this repository.
+
+        :param branch: Branch to commit to.
+        :param parents: Revision ids of the parents of the new revision.
+        :param config: Configuration to use.
+        :param timestamp: Optional timestamp recorded for commit.
+        :param timezone: Optional timezone for timestamp.
+        :param committer: Optional committer to set for commit.
+        :param revprops: Optional dictionary of revision properties.
+        :param revision_id: Optional revision id.
+        :param lossy: Whether to discard data that can not be natively
+            represented, when pushing to a foreign VCS
+        """
+        if self._fallback_repositories and not self._format.supports_chks:
+            raise errors.BzrError("Cannot commit directly to a stacked branch"
+                " in pre-2a formats. See "
+                "https://bugs.launchpad.net/bzr/+bug/375013 for details.")
+        if self._format.rich_root_data:
+            commit_builder_kls = vf_repository.VersionedFileRootCommitBuilder
+        else:
+            commit_builder_kls = vf_repository.VersionedFileCommitBuilder
+        result = commit_builder_kls(self, parents, config,
+            timestamp, timezone, committer, revprops, revision_id,
+            lossy)
+        self.start_write_group()
+        return result
 
     def add_fallback_repository(self, repository):
         """Add a repository to use for looking up data not held locally.
@@ -1993,6 +2012,9 @@
         """
         if self._real_repository is not None:
             self._real_repository.refresh_data()
+        # Refresh the parents cache for this object
+        self._unstacked_provider.disable_cache()
+        self._unstacked_provider.enable_cache()
 
     def revision_ids_to_search_result(self, result_set):
         """Convert a set of revision ids to a graph SearchResult."""

=== modified file 'bzrlib/tests/blackbox/test_commit.py'
--- a/bzrlib/tests/blackbox/test_commit.py	2011-12-20 18:47:35 +0000
+++ b/bzrlib/tests/blackbox/test_commit.py	2011-12-22 16:18:31 +0000
@@ -889,6 +889,6 @@
         # being too low. If rpc_count increases, more network roundtrips have
         # become necessary for this use case. Please do not adjust this number
         # upwards without agreement from bzr's network support maintainers.
-        self.assertLength(211, self.hpss_calls)
+        self.assertLength(213, self.hpss_calls)
         self.expectFailure("commit still uses VFS calls",
             self.assertThat, self.hpss_calls, ContainsNoVfsCalls)

=== modified file 'bzrlib/tests/per_repository/test_commit_builder.py'
--- a/bzrlib/tests/per_repository/test_commit_builder.py	2011-12-09 13:00:30 +0000
+++ b/bzrlib/tests/per_repository/test_commit_builder.py	2011-12-22 16:17:28 +0000
@@ -323,6 +323,7 @@
             # pointless commit.
             self.assertFalse(builder.any_changes())
             builder.finish_inventory()
+            builder.commit('')
             builder_tree = builder.revision_tree()
             new_root_id = builder_tree.get_root_id()
             new_root_revision = builder_tree.get_file_revision(new_root_id)
@@ -333,7 +334,6 @@
                 # We should see a new root revision
                 self.assertNotEqual(old_revision_id, new_root_revision)
         finally:
-            builder.abort()
             tree.unlock()
 
     def test_commit_record_entry_contents(self):
@@ -992,6 +992,7 @@
                                 [inv_key])[inv_key]
                 self.assertEqual(inv_sha1, builder.inv_sha1)
             self.assertIs(None, builder.new_inventory)
+            rev2 = builder.commit('')
             new_inventory = builder.revision_tree().inventory
             new_entry = new_inventory[file_id]
             if delta_against_basis:
@@ -1000,7 +1001,6 @@
             else:
                 expected_delta = None
                 self.assertFalse(version_recorded)
-            rev2 = builder.commit('')
             tree.set_parent_ids([rev2])
         except:
             builder.abort()




More information about the bazaar-commits mailing list