Rev 6295: (jelmer) Add ``Repository.all_revision_ids`` HPSS call. (Jelmer Vernooij) in file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
Patch Queue Manager
pqm at pqm.ubuntu.com
Fri Nov 25 11:42:25 UTC 2011
At file:///srv/pqm.bazaar-vcs.org/archives/thelove/bzr/%2Btrunk/
------------------------------------------------------------
revno: 6295 [merge]
revision-id: pqm at pqm.ubuntu.com-20111125114224-ab9cggsgzzw3118l
parent: pqm at pqm.ubuntu.com-20111125111741-sc39dofu8b2zx4zl
parent: jelmer at samba.org-20111122222712-a8lvnqynst22t8a2
committer: Patch Queue Manager <pqm at pqm.ubuntu.com>
branch nick: +trunk
timestamp: Fri 2011-11-25 11:42:24 +0000
message:
(jelmer) Add ``Repository.all_revision_ids`` HPSS call. (Jelmer Vernooij)
modified:
bzrlib/remote.py remote.py-20060720103555-yeeg2x51vn0rbtdp-1
bzrlib/smart/repository.py repository.py-20061128022038-vr5wy5bubyb8xttk-1
bzrlib/smart/request.py request.py-20061108095550-gunadhxmzkdjfeek-1
bzrlib/tests/test_remote.py test_remote.py-20060720103555-yeeg2x51vn0rbtdp-2
bzrlib/tests/test_smart.py test_smart.py-20061122024551-ol0l0o0oofsu9b3t-2
doc/en/release-notes/bzr-2.5.txt bzr2.5.txt-20110708125756-587p0hpw7oke4h05-1
=== modified file 'bzrlib/remote.py'
--- a/bzrlib/remote.py 2011-11-24 17:50:22 +0000
+++ b/bzrlib/remote.py 2011-11-25 11:42:24 +0000
@@ -1940,8 +1940,19 @@
return self._real_repository.reconcile(other=other, thorough=thorough)
def all_revision_ids(self):
- self._ensure_real()
- return self._real_repository.all_revision_ids()
+ path = self.bzrdir._path_for_remote_call(self._client)
+ try:
+ response_tuple, response_handler = self._call_expecting_body(
+ "Repository.all_revision_ids", path)
+ except errors.UnknownSmartMethod:
+ self._ensure_real()
+ return self._real_repository.all_revision_ids()
+ if response_tuple != ("ok", ):
+ raise errors.UnexpectedSmartServerResponse(response_tuple)
+ revids = set(response_handler.read_body_bytes().splitlines())
+ for fallback in self._fallback_repositories:
+ revids.update(set(fallback.all_revision_ids()))
+ return list(revids)
@needs_read_lock
def get_deltas_for_revisions(self, revisions, specific_fileids=None):
=== modified file 'bzrlib/smart/repository.py'
--- a/bzrlib/smart/repository.py 2011-11-24 17:53:42 +0000
+++ b/bzrlib/smart/repository.py 2011-11-25 11:42:24 +0000
@@ -898,3 +898,12 @@
self.do_insert_stream_request(repository, resume_tokens)
+class SmartServerRepositoryAllRevisionIds(SmartServerRepositoryRequest):
+ """Retrieve all of the revision ids in a repository.
+
+ New in 2.5.
+ """
+
+ def do_repository_request(self, repository):
+ revids = repository.all_revision_ids()
+ return SuccessfulSmartServerResponse(("ok", ), "\n".join(revids))
=== modified file 'bzrlib/smart/request.py'
--- a/bzrlib/smart/request.py 2011-11-22 11:20:10 +0000
+++ b/bzrlib/smart/request.py 2011-11-22 22:27:12 +0000
@@ -611,6 +611,9 @@
request_handlers.register_lazy(
'PackRepository.autopack', 'bzrlib.smart.packrepository',
'SmartServerPackRepositoryAutopack')
+request_handlers.register_lazy('Repository.all_revision_ids',
+ 'bzrlib.smart.repository',
+ 'SmartServerRepositoryAllRevisionIds')
request_handlers.register_lazy('Repository.gather_stats',
'bzrlib.smart.repository',
'SmartServerRepositoryGatherStats')
=== modified file 'bzrlib/tests/test_remote.py'
--- a/bzrlib/tests/test_remote.py 2011-11-23 13:37:05 +0000
+++ b/bzrlib/tests/test_remote.py 2011-11-25 11:42:24 +0000
@@ -2121,6 +2121,31 @@
remote_repo_format.get_format_description())
+class TestRepositoryAllRevisionIds(TestRemoteRepository):
+
+ def test_empty(self):
+ transport_path = 'quack'
+ repo, client = self.setup_fake_client_and_repository(transport_path)
+ client.add_success_response_with_body('', 'ok')
+ self.assertEquals([], repo.all_revision_ids())
+ self.assertEqual(
+ [('call_expecting_body', 'Repository.all_revision_ids',
+ ('quack/',))],
+ client._calls)
+
+ def test_with_some_content(self):
+ transport_path = 'quack'
+ repo, client = self.setup_fake_client_and_repository(transport_path)
+ client.add_success_response_with_body(
+ 'rev1\nrev2\nanotherrev\n', 'ok')
+ self.assertEquals(["rev1", "rev2", "anotherrev"],
+ repo.all_revision_ids())
+ self.assertEqual(
+ [('call_expecting_body', 'Repository.all_revision_ids',
+ ('quack/',))],
+ client._calls)
+
+
class TestRepositoryGatherStats(TestRemoteRepository):
def test_revid_none(self):
=== modified file 'bzrlib/tests/test_smart.py'
--- a/bzrlib/tests/test_smart.py 2011-11-24 17:53:42 +0000
+++ b/bzrlib/tests/test_smart.py 2011-11-25 11:42:24 +0000
@@ -1410,6 +1410,34 @@
request.execute, 'subdir')
+class TestSmartServerRepositoryAllRevisionIds(
+ tests.TestCaseWithMemoryTransport):
+
+ def test_empty(self):
+ """An empty body should be returned for an empty repository."""
+ backing = self.get_transport()
+ request = smart_repo.SmartServerRepositoryAllRevisionIds(backing)
+ self.make_repository('.')
+ self.assertEquals(
+ smart_req.SuccessfulSmartServerResponse(("ok", ), ""),
+ request.execute(''))
+
+ def test_some_revisions(self):
+ """An empty body should be returned for an empty repository."""
+ backing = self.get_transport()
+ request = smart_repo.SmartServerRepositoryAllRevisionIds(backing)
+ tree = self.make_branch_and_memory_tree('.')
+ tree.lock_write()
+ tree.add('')
+ tree.commit(rev_id='origineel', message="message")
+ tree.commit(rev_id='nog-een-revisie', message="message")
+ tree.unlock()
+ self.assertEquals(
+ smart_req.SuccessfulSmartServerResponse(("ok", ),
+ "origineel\nnog-een-revisie"),
+ request.execute(''))
+
+
class TestSmartServerRepositoryGetParentMap(tests.TestCaseWithMemoryTransport):
def test_trivial_bzipped(self):
@@ -2059,6 +2087,8 @@
smart_dir.SmartServerRequestOpenBranchV3)
self.assertHandlerEqual('PackRepository.autopack',
smart_packrepo.SmartServerPackRepositoryAutopack)
+ self.assertHandlerEqual('Repository.all_revision_ids',
+ smart_repo.SmartServerRepositoryAllRevisionIds)
self.assertHandlerEqual('Repository.gather_stats',
smart_repo.SmartServerRepositoryGatherStats)
self.assertHandlerEqual('Repository.get_parent_map',
=== modified file 'doc/en/release-notes/bzr-2.5.txt'
--- a/doc/en/release-notes/bzr-2.5.txt 2011-11-25 11:17:41 +0000
+++ b/doc/en/release-notes/bzr-2.5.txt 2011-11-25 11:42:24 +0000
@@ -104,7 +104,8 @@
* New HPSS calls ``Repository.has_signature_for_revision_id``,
``Repository.make_working_trees``, ``BzrDir.destroy_repository``,
- ``BzrDir.has_workingtree`` and ``Branch.put_config_file``.
+ ``BzrDir.has_workingtree``, ``Branch.put_config_file``,
+ and ``Repository.all_revision_ids``.
(Jelmer Vernooij)
* Custom HPSS error handlers can now be installed in the smart server client
More information about the bazaar-commits
mailing list