in sync/upstream.py [0:0]
def update_wpt_commits(self) -> bool:
if len(self.gecko_commits) == 0:
return False
# Find the commits that were already upstreamed. Some gecko commits may not
# result in an upstream commit, if the patch has no effect. But if we find
# the last commit that was previously upstreamed then all earlier ones must
# also match.
upstreamed_commits = {item.sha1 for item in self.upstreamed_gecko_commits}
matching_commits = list(self.gecko_commits[:])
for gecko_commit in reversed(list(self.gecko_commits)):
if gecko_commit.sha1 in upstreamed_commits:
break
matching_commits.pop()
if len(matching_commits) == len(self.gecko_commits) == len(self.upstreamed_gecko_commits):
return False
if len(matching_commits) == 0:
self.wpt_commits.head = self.wpt_commits.base # type: ignore
elif len(matching_commits) < len(self.upstreamed_gecko_commits):
self.wpt_commits.head = self.wpt_commits[len(matching_commits) - 1] # type: ignore
# Ensure the worktree is clean
wpt_work = self.wpt_worktree.get()
wpt_work.git.reset(hard=True)
wpt_work.git.clean(f=True, d=True, x=True)
for commit in self.gecko_commits[len(matching_commits):]:
commit = self.add_commit(commit)
assert (len(self.wpt_commits) ==
len(self.upstreamed_gecko_commits))
return True