Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
to disassociate the commit with the pull request, and then try again.
(This will create a new pull request!)
'''.format(commit.oid))
gh_number = GhNumber(m.group(1))
# NB: Technically, we don't need to pull this information at
# all, but it's more convenient to unconditionally edit
# title/body when we update the pull request info
title = r['title']
pr_body = r['body']
if self.update_fields:
title, pr_body = self._default_title_and_body(commit, pr_body)
# TODO: remote summary should be done earlier so we can use
# it to test if updates are necessary
remote_summary = ghstack.git.split_header(
self.sh.git(
"rev-list", "--max-count=1", "--header", "origin/" + branch_orig(self.username, gh_number)
)
)[0]
m_remote_source_id = RE_GHSTACK_SOURCE_ID.search(remote_summary.commit_msg())
remote_source_id = m_remote_source_id.group(1) if m_remote_source_id else None
return DiffWithGitHubMetadata(
diff=commit,
title=title,
body=pr_body,
closed=r['closed'],
number=number,
ghnum=gh_number,
remote_source_id=remote_source_id,
pull_request_resolved=commit.pull_request_resolved,
if sh is None:
# Use CWD
sh = ghstack.shell.Shell()
# Parse the commits
parsed_commits: Optional[Set[GitCommitHash]] = None
if commits:
parsed_commits = set()
for c in commits:
parsed_commits.add(GitCommitHash(sh.git("rev-parse", c)))
base = GitCommitHash(sh.git("merge-base", "origin/master", "HEAD"))
# compute the stack of commits in chronological order (does not
# include base)
stack = ghstack.git.split_header(
sh.git("rev-list", "--reverse", "--header", "^" + base, "HEAD"))
# sanity check the parsed_commits
if parsed_commits is not None:
stack_commits = set()
for s in stack:
stack_commits.add(s.commit_id())
invalid_commits = parsed_commits - stack_commits
if invalid_commits:
raise RuntimeError(
"unlink can only process commits which are on the "
"current stack; these commits are not:\n{}"
.format("\n".join(invalid_commits)))
# Run the interactive rebase. Don't start rewriting until we
# hit the first commit that needs it.
"to the upstream repository in question. If your checkout does "
"not comply, please adjust your remotes (by editing .git/config) "
"to make it so. If this message is in error, please register "
"your complaint on GitHub issues (or edit this line to delete "
"the check above.")
repo_id = repo["id"]
sh.git("fetch", "origin")
base = GitCommitHash(sh.git("merge-base", "origin/master", "HEAD"))
# compute the stack of commits to process (reverse chronological order),
stack = ghstack.git.parse_header(
sh.git("rev-list", "--header", "^" + base, "HEAD"))
# compute the base commit
base_obj = ghstack.git.split_header(sh.git("rev-list", "--header", "^" + base + "^@", base))[0]
assert len(stack) > 0
ghstack.logging.record_status(
"{} \"{}\"".format(stack[0].oid[:9], stack[0].title))
submitter = Submitter(github=github,
sh=sh,
username=username,
repo_owner=repo_owner_nonopt,
repo_name=repo_name_nonopt,
repo_id=repo_id,
base_commit=base,
base_tree=base_obj.tree(),
stack_header=stack_header,
update_fields=update_fields,
if repo["isFork"]:
raise RuntimeError(
"Cowardly refusing to upload diffs to a repository that is a "
"fork. ghstack expects 'origin' of your Git checkout to point "
"to the upstream repository in question. If your checkout does "
"not comply, please adjust your remotes (by editing .git/config) "
"to make it so. If this message is in error, please register "
"your complaint on GitHub issues (or edit this line to delete "
"the check above.")
repo_id = repo["id"]
sh.git("fetch", "origin")
base = GitCommitHash(sh.git("merge-base", "origin/master", "HEAD"))
# compute the stack of commits to process (reverse chronological order),
stack = ghstack.git.parse_header(
sh.git("rev-list", "--header", "^" + base, "HEAD"))
# compute the base commit
base_obj = ghstack.git.split_header(sh.git("rev-list", "--header", "^" + base + "^@", base))[0]
assert len(stack) > 0
ghstack.logging.record_status(
"{} \"{}\"".format(stack[0].oid[:9], stack[0].title))
submitter = Submitter(github=github,
sh=sh,
username=username,
repo_owner=repo_owner_nonopt,
repo_name=repo_name_nonopt,
repo_id=repo_id,
params = ghstack.github_utils.parse_pull_request(pull_request)
orig_ref = lookup_pr_to_orig_ref(github, **params)
if sh is None:
# Use CWD
sh = ghstack.shell.Shell()
# Get up-to-date
sh.git("fetch", "origin")
remote_orig_ref = "origin/" + orig_ref
base = GitCommitHash(sh.git("merge-base", "origin/master", remote_orig_ref))
# compute the stack of commits in chronological order (does not
# include base)
stack = ghstack.git.parse_header(
sh.git("rev-list", "--reverse", "--header", "^" + base, remote_orig_ref))
# Switch working copy
try:
prev_ref = sh.git("symbolic-ref", "--short", "HEAD")
except RuntimeError:
prev_ref = sh.git("rev-parse", "HEAD")
# If this fails, we don't have to reset
sh.git("checkout", "origin/master")
try:
# Compute the metadata for each commit
stack_orig_refs = []
for s in stack:
pr_resolved = s.pull_request_resolved