Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def get_gitref(repo, ref):
"""
Retrieve git repo reference if available.
"""
try:
return repo.commit(ref)
except (BadName, BadObject):
return False
elif token == "^":
obj = to_commit(obj)
# must be n'th parent
if num:
obj = obj.parents[num - 1]
elif token == ":":
if obj.type != "tree":
obj = obj.tree
# END get tree type
obj = obj[rev[start:]]
parsed_to = lr
else:
raise ValueError("Invalid token: %r" % token)
# END end handle tag
except (IndexError, AttributeError):
raise BadName("Invalid revision spec '%s' - not enough parent commits to reach '%s%i'" % (rev, token, num))
# END exception handling
# END parse loop
# still no obj ? Its probably a simple name
if obj is None:
obj = name_to_object(repo, rev)
parsed_to = lr
# END handle simple name
if obj is None:
raise ValueError("Revision specifier could not be parsed: %s" % rev)
if parsed_to != lr:
raise ValueError("Didn't consume complete rev spec %s, consumed part: %s" % (rev, rev[:parsed_to]))
return obj
def wrapped(repo, *args, **kwargs):
try:
return func(repo, *args, **kwargs)
except BadName:
repo.precommit()
return func(repo, *args, **kwargs)
def get_commit(branch):
try:
return git_repo.commit(branch)
except gitdb.exc.BadName:
raise CLIError('usage error, invalid branch: {}'.format(branch))
noteexpr = re.compile("^%s: (?P.*) r=.* a=.*" % pr[1:], flags=re.M)
m = noteexpr.search(merge.message)
title = ''
if m is None:
# GitHub merge
title = merge.message.split('\n', 3)[2]
else:
# Bors merge
title = m.group('message')
title = title.strip()
try:
refname = pull_ref_prefix + "/" + pr[1:]
tip = name_to_object(repo, refname)
except exc.BadName:
# Oddly, we have at least one PR (#47761) which does not have a tip
# at /refs/pull/47761, although it's valid and merged.
# As of 2020-06-08 it's the only PR missing a branch tip there.
print("\nuh-oh! can't find PR head in repo", pr, file=sys.stderr)
# We deal with it here assuming that the order of the parents
# of the merge commit is the same as reported by the
# "Merge ..." string in the merge commit's message.
# This happens to be true of the missing PR above as well
# as for several other merge commits with more than two parents.
tip = merge.parents[parent_idx]
print("check at https://github.com/cockroachdb/cockroach/pull/%s that the last commit is %s" % (pr[1:], tip.hexsha), file=sys.stderr)
# TODO(knz): If this method is reliable, this means we don't
# need the pull tips at /refs/pull *at all* which could
# streamline the whole experience.
# This should be investigated further.
return SymbolicReference(repo, base % name)
# END handle symbolic ref
break
except ValueError:
pass
# END for each base
# END handle hexsha
# didn't find any ref, this is an error
if return_ref:
raise BadObject("Couldn't find reference named %r" % name)
# END handle return ref
# tried everything ? fail
if hexsha is None:
raise BadName(name)
# END assert hexsha was found
return Object.new_from_sha(repo, hex_to_bin(hexsha))
from gitdb.exc import BadObject, BadName
trees = {DIFF_A_TREE: None, DIFF_B_TREE: None}
commits = []
if b_ref is None:
b_ref = self.repo.head.commit
try:
a_commit = self.repo.git.rev_parse(a_ref, short=True)
b_commit = self.repo.git.rev_parse(b_ref, short=True)
# See https://gitpython.readthedocs.io
# /en/2.1.11/reference.html#git.objects.base.Object.__str__
commits.append(a_commit)
commits.append(b_commit)
trees[DIFF_A_TREE] = self.get_tree(commits[0])
trees[DIFF_B_TREE] = self.get_tree(commits[1])
except (BadName, BadObject) as e:
raise SCMError("git problem", cause=e)
return trees, commits
try:
self.repo = git.Repo(environ["CI_PROJECT_DIR"])
except git.NoSuchPathError:
click.secho(
f"You are not running crane in a Git repository. "
"crane is running in limited mode, all hooks have been disabled. "
"It is highly recommended you use Git references for your deployments.",
err=True,
fg="red",
)
self.is_limited = True
return
try:
self.new_commit
except (gitdb.exc.BadName, ValueError):
click.secho(
f"The new version you specified, {self.new_version}, is not a valid git reference! "
"crane is running in limited mode, all hooks have been disabled. "
"It is highly recommended you use Git references for your deployments.",
err=True,
fg="red",
)
self.is_limited = True
return
for service in self.services:
if (
self.old_version not in service.json()["launchConfig"]["imageUuid"]
and not settings["new_image"]
):
click.secho(
from gitdb.exc import BadObject, BadName
trees = {DIFF_A_TREE: None, DIFF_B_TREE: None}
commits = []
if b_ref is None:
b_ref = self.repo.head.commit
try:
a_commit = self.repo.git.rev_parse(a_ref, short=True)
b_commit = self.repo.git.rev_parse(b_ref, short=True)
# See https://gitpython.readthedocs.io
# /en/2.1.11/reference.html#git.objects.base.Object.__str__
commits.append(a_commit)
commits.append(b_commit)
trees[DIFF_A_TREE] = self.get_tree(commits[0])
trees[DIFF_B_TREE] = self.get_tree(commits[1])
except (BadName, BadObject) as e:
raise SCMError("git problem", cause=e)
return trees, commits
def load_version_or_404(self, sha=None, public=None):
"""Using git, load a specific version of the content. if `sha` is `None`, the draft/public version is used (if
`public` is `True`).
:param sha: version
:param public: if set with the right object, return the public version
:type public: PublishedContent
:raise Http404: if sha is not None and related version could not be found
:return: the versioned content
:rtype: zds.tutorialv2.models.versioned.ViersionedContent
"""
try:
return self.load_version(sha, public)
except (BadObject, BadName, OSError) as error:
raise Http404(
'Le code sha existe mais la version demandée ne peut pas être trouvée à cause de {}:{}'.format(
type(error), str(error)))