Skip to content

Commit eeb6f2a

Browse files
committed
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 d601e35.
1 parent 9a741f0 commit eeb6f2a

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

git-deps.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -400,6 +400,16 @@ def get_commit(self, rev):
400400

401401
return self.commits[rev]
402402

403+
def get_revisions(self, revspec):
404+
try:
405+
self.get_commit(revspec)
406+
return [revspec]
407+
except InvalidCommitish:
408+
try:
409+
return GitUtils.rev_list(revspec)
410+
except subprocess.CalledProcessError:
411+
raise InvalidCommitish(revspec)
412+
403413
def find_dependencies(self, dependent_rev, recurse=None):
404414
"""Find all dependencies of the given revision, recursively traversing
405415
the dependency tree if requested.
@@ -703,7 +713,8 @@ def cli(options, args):
703713
options.multi = True
704714

705715
for revspec in args:
706-
revs = GitUtils.rev_list(revspec)
716+
revs = detector.get_revisions(revspec)
717+
707718
if len(revs) > 1:
708719
options.multi = True
709720

@@ -786,26 +797,15 @@ def deps(revspec):
786797
listener = JSONDependencyListener(options)
787798
detector.add_listener(listener)
788799

789-
if '..' in revspec:
790-
try:
791-
revisions = GitUtils.rev_list(revspec)
792-
except subprocess.CalledProcessError as e:
793-
return json_err(
794-
422, 'Invalid revision range',
795-
"Could not resolve revision range '%s'" % revspec,
796-
revspec=revspec)
797-
else:
798-
revisions = [revspec]
800+
try:
801+
revisions = detector.get_revisions(revspec)
802+
except:
803+
return json_err(
804+
422, 'Invalid revision or revision range',
805+
"Could not resolve '%s'" % revspec,
806+
revspec=revspec)
799807

800808
for rev in revisions:
801-
try:
802-
commit = detector.get_commit(rev)
803-
except InvalidCommitish as e:
804-
return json_error(
805-
422, 'Invalid revision',
806-
"Could not resolve revision '%s'" % rev,
807-
rev=rev)
808-
809809
detector.find_dependencies(rev)
810810

811811
tip_commit = detector.get_commit(revisions[0])

0 commit comments

Comments
 (0)