| OLD | NEW | 
|---|
| 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be | 
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. | 
| 4 | 4 | 
| 5 """SCM-specific utility classes.""" | 5 """SCM-specific utility classes.""" | 
| 6 | 6 | 
| 7 import cStringIO | 7 import cStringIO | 
| 8 import glob | 8 import glob | 
| 9 import logging | 9 import logging | 
| 10 import os | 10 import os | 
| (...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 447     sha_only: Fail unless rev is a sha hash. | 447     sha_only: Fail unless rev is a sha hash. | 
| 448     """ | 448     """ | 
| 449     # 'git rev-parse foo' where foo is *any* 40 character hex string will return | 449     # 'git rev-parse foo' where foo is *any* 40 character hex string will return | 
| 450     # the string and return code 0. So strip one character to force 'git | 450     # the string and return code 0. So strip one character to force 'git | 
| 451     # rev-parse' to do a hash table look-up and returns 128 if the hash is not | 451     # rev-parse' to do a hash table look-up and returns 128 if the hash is not | 
| 452     # present. | 452     # present. | 
| 453     lookup_rev = rev | 453     lookup_rev = rev | 
| 454     if re.match(r'^[0-9a-fA-F]{40}$', rev): | 454     if re.match(r'^[0-9a-fA-F]{40}$', rev): | 
| 455       lookup_rev = rev[:-1] | 455       lookup_rev = rev[:-1] | 
| 456     try: | 456     try: | 
| 457       sha = GIT.Capture(['rev-parse', lookup_rev], cwd=cwd) | 457       sha = GIT.Capture(['rev-parse', lookup_rev], cwd=cwd).lower() | 
| 458       if lookup_rev != rev: | 458       if lookup_rev != rev: | 
| 459         # Make sure we get the original 40 chars back. | 459         # Make sure we get the original 40 chars back. | 
| 460         return rev == sha | 460         return rev.lower() == sha | 
| 461       if sha_only: | 461       if sha_only: | 
| 462         return sha.startswith(rev) | 462         return sha.startswith(rev.lower()) | 
| 463       return True | 463       return True | 
| 464     except subprocess2.CalledProcessError: | 464     except subprocess2.CalledProcessError: | 
| 465       return False | 465       return False | 
| 466 | 466 | 
| 467   @classmethod | 467   @classmethod | 
| 468   def AssertVersion(cls, min_version): | 468   def AssertVersion(cls, min_version): | 
| 469     """Asserts git's version is at least min_version.""" | 469     """Asserts git's version is at least min_version.""" | 
| 470     if cls.current_version is None: | 470     if cls.current_version is None: | 
| 471       current_version = cls.Capture(['--version'], '.') | 471       current_version = cls.Capture(['--version'], '.') | 
| 472       matched = re.search(r'version ([0-9\.]+)', current_version) | 472       matched = re.search(r'version ([0-9\.]+)', current_version) | 
| (...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1103         # revert, like for properties. | 1103         # revert, like for properties. | 
| 1104         if not os.path.isdir(cwd): | 1104         if not os.path.isdir(cwd): | 
| 1105           # '.' was deleted. It's not worth continuing. | 1105           # '.' was deleted. It's not worth continuing. | 
| 1106           return | 1106           return | 
| 1107         try: | 1107         try: | 
| 1108           SVN.Capture(['revert', file_status[1]], cwd=cwd) | 1108           SVN.Capture(['revert', file_status[1]], cwd=cwd) | 
| 1109         except subprocess2.CalledProcessError: | 1109         except subprocess2.CalledProcessError: | 
| 1110           if not os.path.exists(file_path): | 1110           if not os.path.exists(file_path): | 
| 1111             continue | 1111             continue | 
| 1112           raise | 1112           raise | 
| OLD | NEW | 
|---|