|
44 | 44 |
|
45 | 45 | import glv.vcs as vcs |
46 | 46 | from glv.actors import ProviderActor |
| 47 | +from glv.cli import parse_revisions |
47 | 48 | from glv.providers import Cache, Provider |
48 | 49 |
|
49 | 50 | LOG = logging.getLogger('glv') |
@@ -274,31 +275,32 @@ def __init__(self, |
274 | 275 | self.has_modules = False |
275 | 276 | if vcs.modules(self._repo): |
276 | 277 | self.has_modules = True |
| 278 | + # {str:pygit2.Object } |
277 | 279 | self._branches = { |
278 | 280 | r.shorthand: r.peel() |
279 | 281 | for r in self._repo.references.objects |
280 | 282 | if not r.shorthand.endswith('/HEAD') |
281 | 283 | } |
282 | | - revision = revision or ['HEAD'] |
283 | | - if revision and isinstance(revision[0], str): |
284 | | - if revision == '*': |
285 | | - raise NotImplementedError('--all switch NYI') |
286 | | - self.revision = revision[0] |
287 | | - self.__end = None |
288 | | - try: |
289 | | - if '..' in self.revision: |
290 | | - tmp = self.revision.split('..') |
291 | | - self.__end: GitCommit = self._repo.revparse_single(tmp[0]) |
292 | | - self.__start: GitCommit = self._repo.revparse_single( |
293 | | - tmp[1]) |
294 | | - else: |
295 | | - self.__start: GitCommit = self._repo.revparse_single( |
296 | | - self.revision) |
297 | | - except KeyError: |
298 | | - raise NoRevisionMatches |
299 | | - else: |
| 284 | + parsed_results = parse_revisions(revision) |
| 285 | + if len(parsed_results) == 0: |
| 286 | + raise NoRevisionMatches |
| 287 | + if len(parsed_results) > 1: |
300 | 288 | raise NotImplementedError('Multi branch support NYI') |
301 | 289 |
|
| 290 | + first_revision_result = parsed_results[0] |
| 291 | + self.revision = first_revision_result.input |
| 292 | + try: |
| 293 | + self.__start: GitCommit = self._repo.revparse_single( |
| 294 | + first_revision_result.start) |
| 295 | + |
| 296 | + if first_revision_result.end: |
| 297 | + self.__end: GitCommit = self._repo.revparse_single( |
| 298 | + first_revision_result.end) |
| 299 | + else: |
| 300 | + self.__end = None |
| 301 | + except KeyError as exc: |
| 302 | + raise NoRevisionMatches from exc |
| 303 | + |
302 | 304 | for provider in providers().values(): |
303 | 305 | if provider.enabled(self._repo): |
304 | 306 | cache_dir = self._repo.path + __name__ + '/remotes/origin' |
|
0 commit comments