| Index: ensure_dependencies.py | 
| diff --git a/ensure_dependencies.py b/ensure_dependencies.py | 
| index def9a7e9803cf29d8f8f70d644c599981b206163..cec2bbeed97e14686f1af493fef7179422b69815 100755 | 
| --- a/ensure_dependencies.py | 
| +++ b/ensure_dependencies.py | 
| @@ -34,6 +34,10 @@ A dependencies file should look like this: | 
| buildtools = buildtools hg:016d16f7137b git:f3f8692f82e5 | 
| """ | 
|  | 
| +SKIP_DEPENDENCY_UPDATES = os.environ.get( | 
| +  "SKIP_DEPENDENCY_UPDATES", "" | 
| +).lower() not in ("", "0", "false") | 
| + | 
| class Mercurial(): | 
| def istype(self, repodir): | 
| return os.path.exists(os.path.join(repodir, ".hg")) | 
| @@ -201,6 +205,11 @@ def ensure_repo(parentrepo, target, roots, sourcename): | 
| if os.path.exists(target): | 
| return | 
|  | 
| +  if SKIP_DEPENDENCY_UPDATES: | 
| +    logging.warning("SKIP_DEPENDENCY_UPDATES environment variable set, " | 
| +                    "%s not cloned", target) | 
| +    return | 
| + | 
| parenttype = get_repo_type(parentrepo) | 
| type = None | 
| for key in roots: | 
| @@ -240,15 +249,21 @@ def update_repo(target, revisions): | 
| return | 
|  | 
| resolved_revision = repo_types[type].get_revision_id(target, revision) | 
| -  if not resolved_revision: | 
| -    logging.info("Revision %s is unknown, downloading remote changes" % revision) | 
| -    repo_types[type].pull(target) | 
| -    resolved_revision = repo_types[type].get_revision_id(target, revision) | 
| -    if not resolved_revision: | 
| -      raise Exception("Failed to resolve revision %s" % revision) | 
| - | 
| current_revision = repo_types[type].get_revision_id(target) | 
| + | 
| if resolved_revision != current_revision: | 
| +    if SKIP_DEPENDENCY_UPDATES: | 
| +      logging.warning("SKIP_DEPENDENCY_UPDATES environment variable set, " | 
| +                      "%s not checked out to %s", target, revision) | 
| +      return | 
| + | 
| +    if not resolved_revision: | 
| +      logging.info("Revision %s is unknown, downloading remote changes" % revision) | 
| +      repo_types[type].pull(target) | 
| +      resolved_revision = repo_types[type].get_revision_id(target, revision) | 
| +      if not resolved_revision: | 
| +        raise Exception("Failed to resolve revision %s" % revision) | 
| + | 
| logging.info("Updating repository %s to revision %s" % (target, resolved_revision)) | 
| repo_types[type].update(target, resolved_revision) | 
|  | 
|  |