| Index: gclient_scm.py
|
| diff --git a/gclient_scm.py b/gclient_scm.py
|
| index 913d9a57e6746eba82bda263d430a11163696e08..91f03b027751c572a68d3c1826a27e572122174f 100644
|
| --- a/gclient_scm.py
|
| +++ b/gclient_scm.py
|
| @@ -140,23 +140,41 @@ class SCMWrapper(object):
|
|
|
| return getattr(self, command)(options, args, file_list)
|
|
|
| - def GetActualRemoteURL(self):
|
| + def GetActualRemoteURL(self, options):
|
| """Attempt to determine the remote URL for this SCMWrapper."""
|
| + # Git
|
| if os.path.exists(os.path.join(self.checkout_path, '.git')):
|
| - return shlex.split(scm.GIT.Capture(
|
| + actual_remote_url = shlex.split(scm.GIT.Capture(
|
| ['config', '--local', '--get-regexp', r'remote.*.url'],
|
| self.checkout_path))[1]
|
| +
|
| + # If a cache_dir is used, obtain the actual remote URL from the cache.
|
| + if getattr(self, 'cache_dir', None):
|
| + try:
|
| + full_cache_dir = self._Run(['cache', 'exists', '--cache-dir',
|
| + self.cache_dir, self.url],
|
| + options, cwd=self._root_dir).strip()
|
| + except subprocess2.CalledProcessError:
|
| + full_cache_dir = None
|
| + if (full_cache_dir.replace('\\', '/') ==
|
| + actual_remote_url.replace('\\', '/')):
|
| + actual_remote_url = shlex.split(scm.GIT.Capture(
|
| + ['config', '--local', '--get-regexp', r'remote.*.url'],
|
| + os.path.join(self._root_dir, full_cache_dir)))[1]
|
| + return actual_remote_url
|
| +
|
| + # Svn
|
| if os.path.exists(os.path.join(self.checkout_path, '.svn')):
|
| return scm.SVN.CaptureLocalInfo([], self.checkout_path)['URL']
|
| return None
|
|
|
| - def DoesRemoteURLMatch(self):
|
| + def DoesRemoteURLMatch(self, options):
|
| """Determine whether the remote URL of this checkout is the expected URL."""
|
| if not os.path.exists(self.checkout_path):
|
| # A checkout which doesn't exist can't be broken.
|
| return True
|
|
|
| - actual_remote_url = self.GetActualRemoteURL()
|
| + actual_remote_url = self.GetActualRemoteURL(options)
|
| if actual_remote_url:
|
| return (gclient_utils.SplitUrlRevision(actual_remote_url)[0].rstrip('/')
|
| == gclient_utils.SplitUrlRevision(self.url)[0].rstrip('/'))
|
|
|