in esrally/mechanic/supplier.py [0:0]
def _update(self, revision):
if self.has_remote() and revision == "latest":
self.logger.info("Fetching latest sources for %s from origin.", self.name)
git.pull(self.src_dir, remote="origin", branch=self.branch)
elif revision == "current":
self.logger.info("Skip fetching sources for %s.", self.name)
# revision contains a timestamp
elif self.has_remote() and "@" in revision:
branch, git_ts_revision = _branch_from_revision_with_ts(revision, self.branch)
self.logger.info(
"Fetching from remote and checking out revision with timestamp [%s] from branch %s for %s.",
git_ts_revision,
branch,
self.name,
)
git.pull_ts(self.src_dir, git_ts_revision, remote="origin", branch=branch, default_branch=DEFAULT_ELASTICSEARCH_BRANCH)
elif self.has_remote(): # we can have either a commit hash, branch name, or tag
git.fetch(self.src_dir, remote="origin")
if git.is_branch(self.src_dir, identifier=revision):
self.logger.info("Fetching from remote and checking out branch [%s] for %s.", revision, self.name)
git.checkout_branch(self.src_dir, remote="origin", branch=revision)
else: # tag or commit hash
self.logger.info("Fetching from remote and checking out revision [%s] for %s.", revision, self.name)
git.checkout_revision(self.src_dir, revision=revision)
else:
self.logger.info("Checking out local revision [%s] for %s.", revision, self.name)
git.checkout(self.src_dir, branch=revision)
if git.is_working_copy(self.src_dir):
git_revision = git.head_revision(self.src_dir)
self.logger.info("User-specified revision [%s] for [%s] results in git revision [%s]", revision, self.name, git_revision)
return git_revision
else:
self.logger.info("Skipping git revision resolution for %s (%s is not a git repository).", self.name, self.src_dir)
return None