| 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) |