| Index: gclient.py | 
| diff --git a/gclient.py b/gclient.py | 
| index 9065952bdfd959d56b56dbdf1be77ebfc3dd1c61..ab52cc8eee6098eed83c4ce41dd652606ebf4bea 100644 | 
| --- a/gclient.py | 
| +++ b/gclient.py | 
| @@ -168,6 +168,10 @@ class DependencySettings(GClientKeywords): | 
| # recursion limit and controls gclient's behavior so it does not misbehave. | 
| self._managed = managed | 
| self._should_process = should_process | 
| +    # This is a mutable value that overrides the normal recursion limit for this | 
| +    # dependency.  It is read from the actual DEPS file so cannot be set on | 
| +    # class instantiation. | 
| +    self.recursion_override = None | 
|  | 
| # These are only set in .gclient and not in DEPS files. | 
| self._custom_vars = custom_vars or {} | 
| @@ -231,6 +235,8 @@ class DependencySettings(GClientKeywords): | 
| @property | 
| def recursion_limit(self): | 
| """Returns > 0 if this dependency is not too recursed to be processed.""" | 
| +    if self.recursion_override is not None: | 
| +      return self.recursion_override | 
| return max(self.parent.recursion_limit - 1, 0) | 
|  | 
| def get_custom_deps(self, name, url): | 
| @@ -445,6 +451,10 @@ class Dependency(gclient_utils.WorkItem, DependencySettings): | 
| except SyntaxError, e: | 
| gclient_utils.SyntaxErrorToError(filepath, e) | 
| deps = local_scope.get('deps', {}) | 
| +    if 'recursion' in local_scope: | 
| +      self.recursion_override = local_scope.get('recursion') | 
| +      logging.warning( | 
| +          'Setting %s recursion to %d.', self.name, self.recursion_limit) | 
| # load os specific dependencies if defined.  these dependencies may | 
| # override or extend the values defined by the 'deps' member. | 
| if 'deps_os' in local_scope: | 
|  |