Source code

Revision control

Copy as Markdown

Other Tools

# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# This script lists the commits on a libwebrtc branch-head for a given
# chromium milestone. It resolves the branch-head number from the milestone
# using lookup_branch_head.py and then lists the commits that are specific
# to that release branch (cherry-picked onto branch-heads/XXXX but not on
# master).
#
# The get_branch_head_commits() function is also imported by
# check_missing_branch_head_commits.py.
import argparse
import os
import sys
from fetch_github_repo import fetch_repo
from lookup_branch_head import get_branch_head
from run_operations import run_git
default_state_dir = ".moz-fast-forward"
default_repo_dir = ".moz-fast-forward/moz-libwebrtc"
default_tar_name = "moz-libwebrtc.tar.gz"
def get_branch_head_commits(repo_path, milestone):
if not os.path.exists(repo_path):
print(f"repo not found at {repo_path}, fetching...")
fetch_repo(
repo_path,
False,
os.path.join(default_state_dir, default_tar_name),
)
branch_head_num = get_branch_head(milestone)
if branch_head_num is None:
sys.exit(
f"error: no branch_head info is found for chromium milestone '{milestone}'."
)
branch_head = f"branch-heads/{branch_head_num}"
merge_base_lines = run_git(f"git merge-base master {branch_head}", repo_path)
if len(merge_base_lines) != 1:
sys.exit(f"error: unable to find merge-base for {branch_head}")
merge_base = merge_base_lines[0]
full_shas = run_git(f"git log --format=%H {merge_base}..{branch_head}", repo_path)
oneline_commits = run_git(
f"git log --oneline {merge_base}..{branch_head}", repo_path
)
upstream_subjects = run_git(
f"git log --format=%s {merge_base}..{branch_head}", repo_path
)
return branch_head, full_shas, oneline_commits, upstream_subjects
if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="Show commits on the libwebrtc branch-head for a given chromium milestone"
)
parser.add_argument(
"milestone", type=int, help="integer chromium milestone (example: 106)"
)
parser.add_argument(
"--repo-path",
default=default_repo_dir,
help=f"path to moz-libwebrtc repo (defaults to {default_repo_dir})",
)
args = parser.parse_args()
branch_head, full_shas, oneline_commits, upstream_subjects = (
get_branch_head_commits(args.repo_path, args.milestone)
)
print(f"chromium milestone {args.milestone} uses {branch_head}")
if not oneline_commits:
print(f"no branch-specific commits found on {branch_head}")
sys.exit(0)
print(f"\n{len(oneline_commits)} commit(s) on {branch_head}:")
for commit in oneline_commits:
print(commit)