diff options
Diffstat (limited to 'devbot')
-rw-r--r-- | devbot/build.py | 9 | ||||
-rw-r--r-- | devbot/git.py | 6 |
2 files changed, 9 insertions, 6 deletions
diff --git a/devbot/build.py b/devbot/build.py index ba9adc8..1f486ca 100644 --- a/devbot/build.py +++ b/devbot/build.py @@ -33,7 +33,7 @@ def pull_one(module_name): return False -def pull(lazy=False): +def pull(revisions={}, lazy=False): to_pull = [] for module in config.load_modules(): git_module = git.get_module(module) @@ -44,7 +44,8 @@ def pull(lazy=False): print "\n= Pulling =\n" for module in to_pull: - if not _pull_module(module): + revision = revisions.get(module.name, None) + if not _pull_module(module, revision): return False return True @@ -111,13 +112,13 @@ def _unlink_libtool_files(): os.path.walk(config.lib_dir, func, None) -def _pull_module(module): +def _pull_module(module, revision=None): print "* Pulling %s" % module.name git_module = git.get_module(module) try: - git_module.update() + git_module.update(revision) except subprocess.CalledProcessError: return False diff --git a/devbot/git.py b/devbot/git.py index cb361ef..960fd7c 100644 --- a/devbot/git.py +++ b/devbot/git.py @@ -46,7 +46,7 @@ class Module: else: command.run(["git", "checkout", self._branch]) - def update(self): + def update(self, revision=None): if not os.path.exists(os.path.join(self.local, ".git")): self._clone() return @@ -55,7 +55,9 @@ class Module: command.run(["git", "fetch"], retry=self._retry) - if self.tag: + if revision: + command.run(["git", "checkout", revision]) + elif self.tag: command.run(["git", "checkout", self.tag]) else: command.run(["git", "merge", "--ff-only", |