diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2021-05-10 11:58:45 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-10 11:58:45 -0700 |
commit | fbd9b9939cffda4936a986bc729833c69b61f4cb (patch) | |
tree | f771ddf823c088b83f6987fe7b50545c1a7b9bdc /Tools | |
parent | bpo-43558: Add note about base class initialization to dataclasses doc (GH-25... (diff) | |
download | cpython-fbd9b9939cffda4936a986bc729833c69b61f4cb.tar.gz cpython-fbd9b9939cffda4936a986bc729833c69b61f4cb.tar.bz2 cpython-fbd9b9939cffda4936a986bc729833c69b61f4cb.zip |
bpo-44074: let patchcheck infer the base branch name (GH-25991)
(cherry picked from commit 21fbbb98bac8bfe56f8b931258c36750e84f9285)
Co-authored-by: Leonardo Lai <leonardo.lai@live.com>
Diffstat (limited to 'Tools')
-rwxr-xr-x | Tools/scripts/patchcheck.py | 30 |
1 files changed, 26 insertions, 4 deletions
diff --git a/Tools/scripts/patchcheck.py b/Tools/scripts/patchcheck.py index 8a8480a0c22..d9cceb5d5ac 100755 --- a/Tools/scripts/patchcheck.py +++ b/Tools/scripts/patchcheck.py @@ -50,7 +50,8 @@ def get_git_branch(): try: return subprocess.check_output(cmd, stderr=subprocess.DEVNULL, - cwd=SRCDIR) + cwd=SRCDIR, + encoding='UTF-8') except subprocess.CalledProcessError: return None @@ -64,28 +65,49 @@ def get_git_upstream_remote(): try: subprocess.check_output(cmd, stderr=subprocess.DEVNULL, - cwd=SRCDIR) + cwd=SRCDIR, + encoding='UTF-8') except subprocess.CalledProcessError: return "origin" return "upstream" +def get_git_remote_default_branch(remote_name): + """Get the name of the default branch for the given remote + + It is typically called 'main', but may differ + """ + cmd = "git remote show {}".format(remote_name).split() + try: + remote_info = subprocess.check_output(cmd, + stderr=subprocess.DEVNULL, + cwd=SRCDIR, + encoding='UTF-8') + except subprocess.CalledProcessError: + return None + for line in remote_info.splitlines(): + if "HEAD branch:" in line: + base_branch = line.split(":")[1].strip() + return base_branch + return None + + @status("Getting base branch for PR", info=lambda x: x if x is not None else "not a PR branch") def get_base_branch(): if not os.path.exists(os.path.join(SRCDIR, '.git')): # Not a git checkout, so there's no base branch return None + upstream_remote = get_git_upstream_remote() version = sys.version_info if version.releaselevel == 'alpha': - base_branch = "master" + base_branch = get_git_remote_default_branch(upstream_remote) else: base_branch = "{0.major}.{0.minor}".format(version) this_branch = get_git_branch() if this_branch is None or this_branch == base_branch: # Not on a git PR branch, so there's no base branch return None - upstream_remote = get_git_upstream_remote() return upstream_remote + "/" + base_branch |