| Index: gclient_scm.py | 
| diff --git a/gclient_scm.py b/gclient_scm.py | 
| index 8519fa9d04a5b627fb2f331cc340a311a1d32a68..546aa08cd7b06ec4cf43933ad7a1b8b5fbfb7c02 100644 | 
| --- a/gclient_scm.py | 
| +++ b/gclient_scm.py | 
| @@ -213,6 +213,7 @@ class GitWrapper(SCMWrapper): | 
| rev_type = "hash" | 
|  | 
| if not os.path.exists(self.checkout_path): | 
| +      gclient_utils.safe_makedirs(os.path.dirname(self.checkout_path)) | 
| self._Clone(revision, url, options) | 
| files = self._Capture(['ls-files']).splitlines() | 
| file_list.extend([os.path.join(self.checkout_path, f) for f in files]) | 
| @@ -508,7 +509,7 @@ class GitWrapper(SCMWrapper): | 
| # create it, so we need to do it manually. | 
| parent_dir = os.path.dirname(self.checkout_path) | 
| if not os.path.exists(parent_dir): | 
| -      os.makedirs(parent_dir) | 
| +      gclient_utils.safe_makedirs(parent_dir) | 
|  | 
| percent_re = re.compile('.* ([0-9]{1,2})% .*') | 
| def _GitFilter(line): | 
| @@ -775,6 +776,7 @@ class SVNWrapper(SCMWrapper): | 
| rev_str = '' | 
|  | 
| if not os.path.exists(self.checkout_path): | 
| +      gclient_utils.safe_makedirs(os.path.dirname(self.checkout_path)) | 
| # We need to checkout. | 
| command = ['checkout', url, self.checkout_path] | 
| command = self._AddAdditionalUpdateFlags(command, options, revision) | 
| @@ -906,7 +908,7 @@ class SVNWrapper(SCMWrapper): | 
| # information is not stored next to the file, so we will have to | 
| # re-export the file every time we sync. | 
| if not os.path.exists(self.checkout_path): | 
| -        os.makedirs(self.checkout_path) | 
| +        gclient_utils.safe_makedirs(self.checkout_path) | 
| command = ["export", os.path.join(self.url, filename), | 
| os.path.join(self.checkout_path, filename)] | 
| command = self._AddAdditionalUpdateFlags(command, options, | 
|  |