Show More
@@ -81,6 +81,18 b' class GitRepository(BaseRepository):' | |||
|
81 | 81 | except KeyError: |
|
82 | 82 | return None |
|
83 | 83 | |
|
84 | @property | |
|
85 | def _empty(self): | |
|
86 | """ | |
|
87 | Checks if repository is empty ie. without any changesets | |
|
88 | """ | |
|
89 | ||
|
90 | try: | |
|
91 | self.revisions[0] | |
|
92 | except (KeyError, IndexError): | |
|
93 | return True | |
|
94 | return False | |
|
95 | ||
|
84 | 96 | @LazyProperty |
|
85 | 97 | def revisions(self): |
|
86 | 98 | """ |
@@ -250,9 +262,7 b' class GitRepository(BaseRepository):' | |||
|
250 | 262 | |
|
251 | 263 | is_null = lambda o: len(o) == revision.count('0') |
|
252 | 264 | |
|
253 |
t |
|
|
254 | self.revisions[0] | |
|
255 | except (KeyError, IndexError): | |
|
265 | if self._empty: | |
|
256 | 266 | raise EmptyRepositoryError("There are no changesets yet") |
|
257 | 267 | |
|
258 | 268 | if revision in (None, '', 'tip', 'HEAD', 'head', -1): |
@@ -492,6 +502,11 b' class GitRepository(BaseRepository):' | |||
|
492 | 502 | if branch_name and branch_name not in self.branches: |
|
493 | 503 | raise BranchDoesNotExistError("Branch '%s' not found" \ |
|
494 | 504 | % branch_name) |
|
505 | # actually we should check now if it's not an empty repo to not spaw | |
|
506 | # subprocess commands | |
|
507 | if self._empty: | |
|
508 | raise EmptyRepositoryError("There are no changesets yet") | |
|
509 | ||
|
495 | 510 | # %H at format means (full) commit hash, initial hashes are retrieved |
|
496 | 511 | # in ascending date order |
|
497 | 512 | cmd_template = 'log --date-order --reverse --pretty=format:"%H"' |
@@ -78,7 +78,7 b' class MercurialRepository(BaseRepository' | |||
|
78 | 78 | @property |
|
79 | 79 | def _empty(self): |
|
80 | 80 | """ |
|
81 | Checks if repository is empty without any changesets | |
|
81 | Checks if repository is empty ie. without any changesets | |
|
82 | 82 | """ |
|
83 | 83 | # TODO: Following raises errors when using InMemoryChangeset... |
|
84 | 84 | # return len(self._repo.changelog) == 0 |
@@ -1,5 +1,6 b'' | |||
|
1 | 1 | from __future__ import with_statement |
|
2 | 2 | |
|
3 | import time | |
|
3 | 4 | import datetime |
|
4 | 5 | from rhodecode.lib import vcs |
|
5 | 6 | from rhodecode.tests.vcs.base import BackendTestMixin |
@@ -12,9 +13,10 b' from rhodecode.lib.vcs.nodes import (' | |||
|
12 | 13 | ) |
|
13 | 14 | from rhodecode.lib.vcs.exceptions import ( |
|
14 | 15 | BranchDoesNotExistError, ChangesetDoesNotExistError, |
|
15 | RepositoryError | |
|
16 | RepositoryError, EmptyRepositoryError | |
|
16 | 17 | ) |
|
17 | 18 | from rhodecode.lib.vcs.utils.compat import unittest |
|
19 | from rhodecode.tests.vcs.conf import get_new_dir | |
|
18 | 20 | |
|
19 | 21 | |
|
20 | 22 | class TestBaseChangeset(unittest.TestCase): |
@@ -197,6 +199,14 b' class ChangesetsTestCaseMixin(BackendTes' | |||
|
197 | 199 | changesets = list(self.repo.get_changesets(start=2, end=3)) |
|
198 | 200 | self.assertEqual(len(changesets), 2) |
|
199 | 201 | |
|
202 | def test_get_changesets_on_empty_repo_raises_EmptyRepository_error(self): | |
|
203 | Backend = self.get_backend() | |
|
204 | repo_path = get_new_dir(str(time.time())) | |
|
205 | repo = Backend(repo_path, create=True) | |
|
206 | ||
|
207 | with self.assertRaises(EmptyRepositoryError): | |
|
208 | list(repo.get_changesets(start='foobar')) | |
|
209 | ||
|
200 | 210 | def test_get_changesets_includes_end_changeset(self): |
|
201 | 211 | second_id = self.repo.revisions[1] |
|
202 | 212 | changesets = list(self.repo.get_changesets(end=second_id)) |
General Comments 0
You need to be logged in to leave comments.
Login now