scm.GIT.IsValidRevision: Only return True if the given object is a commit
BUG=383476
Review URL: https://codereview.chromium.org/329823002
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@276487 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/scm.py b/scm.py
index eb5c524..d60453d 100644
--- a/scm.py
+++ b/scm.py
@@ -491,12 +491,15 @@
sha = GIT.Capture(['rev-parse', lookup_rev], cwd=cwd).lower()
if lookup_rev != rev:
# Make sure we get the original 40 chars back.
- return rev.lower() == sha
+ if rev.lower() != sha:
+ return False
if sha_only:
- return sha.startswith(rev.lower())
- return True
+ if not sha.startswith(rev.lower()):
+ return False
except subprocess2.CalledProcessError:
return False
+ obj_type = GIT.Capture(['cat-file', '-t', rev], cwd=cwd).strip()
+ return obj_type == 'commit'
@classmethod
def AssertVersion(cls, min_version):