From eeb6f2afcdcf0cd60e98e3cd3181834c909067f5 Mon Sep 17 00:00:00 2001 From: Rob Hoes Date: Thu, 18 Jan 2018 15:15:00 +0000 Subject: [PATCH] fix CLI for single revisions The CLI unconditionally passes all argument to rev-list, even if the argument is a single commit rather than a revision range. This causes the CLI to always analyse the entire git history up to the given commit, rather than just that commit. Introduced in d601e35f. --- git-deps.py | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/git-deps.py b/git-deps.py index 216bb9e..c7ae179 100755 --- a/git-deps.py +++ b/git-deps.py @@ -400,6 +400,16 @@ def get_commit(self, rev): return self.commits[rev] + def get_revisions(self, revspec): + try: + self.get_commit(revspec) + return [revspec] + except InvalidCommitish: + try: + return GitUtils.rev_list(revspec) + except subprocess.CalledProcessError: + raise InvalidCommitish(revspec) + def find_dependencies(self, dependent_rev, recurse=None): """Find all dependencies of the given revision, recursively traversing the dependency tree if requested. @@ -703,7 +713,8 @@ def cli(options, args): options.multi = True for revspec in args: - revs = GitUtils.rev_list(revspec) + revs = detector.get_revisions(revspec) + if len(revs) > 1: options.multi = True @@ -786,26 +797,15 @@ def deps(revspec): listener = JSONDependencyListener(options) detector.add_listener(listener) - if '..' in revspec: - try: - revisions = GitUtils.rev_list(revspec) - except subprocess.CalledProcessError as e: - return json_err( - 422, 'Invalid revision range', - "Could not resolve revision range '%s'" % revspec, - revspec=revspec) - else: - revisions = [revspec] + try: + revisions = detector.get_revisions(revspec) + except: + return json_err( + 422, 'Invalid revision or revision range', + "Could not resolve '%s'" % revspec, + revspec=revspec) for rev in revisions: - try: - commit = detector.get_commit(rev) - except InvalidCommitish as e: - return json_error( - 422, 'Invalid revision', - "Could not resolve revision '%s'" % rev, - rev=rev) - detector.find_dependencies(rev) tip_commit = detector.get_commit(revisions[0])