in scripts/regressor_finder.py [0:0]
def get_commits_to_ignore(self) -> None:
assert db.download(repository.COMMITS_DB)
ignored = set()
commits_to_ignore = []
all_commits = set()
annotate_ignore_nodes = {
node for node, label in labels.get_labels("annotateignore") if label == "1"
}
for commit in repository.get_commits(
include_no_bug=True, include_backouts=True, include_ignored=True
):
all_commits.add(commit["node"][:12])
if (
commit["ignored"]
or commit["backedoutby"]
or not commit["bug_id"]
or len(commit["backsout"]) > 0
or repository.is_wptsync(commit)
or commit["node"] in annotate_ignore_nodes
):
commits_to_ignore.append(
{
"rev": commit["node"],
"type": "backedout" if commit["backedoutby"] else "",
}
)
ignored.add(commit["node"][:12])
if len(commit["backsout"]) > 0:
for backedout in commit["backsout"]:
if backedout[:12] in ignored:
continue
ignored.add(backedout[:12])
commits_to_ignore.append({"rev": backedout, "type": "backedout"})
logger.info("%d commits to ignore...", len(commits_to_ignore))
# Skip backed-out commits which aren't in the repository (commits which landed *before* the Mercurial history
# started, and backouts which mentioned a bad hash in their message).
commits_to_ignore = [
c for c in commits_to_ignore if c["rev"][:12] in all_commits
]
logger.info("%d commits to ignore...", len(commits_to_ignore))
logger.info(
"...of which %d are backed-out",
sum(commit["type"] == "backedout" for commit in commits_to_ignore),
)
db.write(IGNORED_COMMITS_DB, commits_to_ignore)
zstd_compress(IGNORED_COMMITS_DB)
db.upload(IGNORED_COMMITS_DB)