From 268a40092ee1d0e024e0b109bf5a1b461087fe5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Wed, 31 Aug 2016 15:59:27 +0200 Subject: [PATCH] SVN doesn't like requesting logs for non-existent revisions If revisions 1-130 exist, it errors at "svn log -r 1:250", so we can't reliably give a last number. Easiest solution is to just forego per-batch processing, and fetch all the unseen entries in one go. --- attract_server/subversion.py | 4 +--- tests/test_subversion.py | 12 +++--------- 2 files changed, 4 insertions(+), 12 deletions(-) diff --git a/attract_server/subversion.py b/attract_server/subversion.py index a8c4cc3..f94f0ae 100644 --- a/attract_server/subversion.py +++ b/attract_server/subversion.py @@ -12,7 +12,6 @@ from . import attrs_extra task_logged = blinker.NamedSignal('task_logged') task_marker_re = re.compile(r'\[(?PT\d+)\]') -FETCH_AND_OBSERVE_CHUNK_SIZE = 10 def obtain(server_location): @@ -33,8 +32,7 @@ class CommitLogObserver(object): self._log.debug('%s: fetch_and_observe()', self) svn_log = self.svn_client.log_default( - revision_from=self.last_seen_revision + 1, - revision_to=self.last_seen_revision + FETCH_AND_OBSERVE_CHUNK_SIZE) + revision_from=self.last_seen_revision + 1) for log_entry in svn_log: self._log.debug('- %r', log_entry) diff --git a/tests/test_subversion.py b/tests/test_subversion.py index 108c6ed..bf04a84 100644 --- a/tests/test_subversion.py +++ b/tests/test_subversion.py @@ -78,9 +78,7 @@ class TestCommitLogObserver(unittest.TestCase): self.mock_client.log_default = mock.Mock(name='log_default', return_value=[]) self.observer.fetch_and_observe() - self.mock_client.log_default.assert_called_once_with( - revision_from=1, - revision_to=subversion.FETCH_AND_OBSERVE_CHUNK_SIZE) + self.mock_client.log_default.assert_called_once_with(revision_from=1) # Should not have changed from the default. self.assertEqual(self.observer.last_seen_revision, 0) @@ -97,14 +95,10 @@ class TestCommitLogObserver(unittest.TestCase): self.observer.last_seen_revision = 42 self.observer.fetch_and_observe() - self.mock_client.log_default.assert_called_with( - revision_from=43, - revision_to=42 + subversion.FETCH_AND_OBSERVE_CHUNK_SIZE) + self.mock_client.log_default.assert_called_with(revision_from=43) self.observer.fetch_and_observe() - self.mock_client.log_default.assert_called_with( - revision_from=47, - revision_to=46 + subversion.FETCH_AND_OBSERVE_CHUNK_SIZE) + self.mock_client.log_default.assert_called_with(revision_from=47) self.assertEqual(self.observer.last_seen_revision, 51)