Index: ensure_dependencies.py |
diff --git a/ensure_dependencies.py b/ensure_dependencies.py |
index b6557d051f6661645dea95edfde280ea288f7533..70130b5d97e7327d07128596f3c2e7d50771dc1e 100755 |
--- a/ensure_dependencies.py |
+++ b/ensure_dependencies.py |
@@ -97,6 +97,17 @@ class Git(): |
return subprocess.check_output(command, cwd=repo).strip() |
def pull(self, repo): |
+ # First perform a fetch so we have a list of remote branch names |
+ subprocess.check_call(["git", "fetch", "--quiet"], cwd=repo) |
+ # Next we need to ensure all remote branches are tracked |
+ remotes = subprocess.check_output(["git", "branch", "--remotes"], cwd=repo) |
+ for match in re.finditer(r"origin/(\S+)", remotes): |
+ remote, local = match.group(0), match.group(1) |
+ if local not in ["HEAD", "master"]: |
+ with open(os.devnull, "w") as devnull: |
+ subprocess.call(["git", "branch", "--track", local, remote], |
+ cwd=repo, stdout=devnull, stderr=devnull) |
+ # Finally we need to actually fetch all the remote branches and tags |
subprocess.check_call(["git", "fetch", "--quiet", "--all", "--tags"], cwd=repo) |
def update(self, repo, rev): |