chore: save HEAD when git-import-patches runs (#17824)

This commit is contained in:
Jeremy Apthorp 2019-04-17 11:16:03 -07:00 committed by GitHub
parent f901170a4f
commit fdaa75354a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 8 deletions

View file

@ -9,14 +9,35 @@ import sys
def guess_base_commit(repo):
"""Guess which commit the patches might be based on"""
args = [
'git',
'-C',
repo,
'describe',
'--tags',
]
return subprocess.check_output(args).rsplit('-', 2)[0:2]
try:
args = [
'git',
'-C',
repo,
'rev-parse',
'--verify',
'refs/patches/upstream-head',
]
upstream_head = subprocess.check_output(args).strip()
args = [
'git',
'-C',
repo,
'rev-list',
'--count',
upstream_head + '..',
]
num_commits = subprocess.check_output(args).strip()
return [upstream_head, num_commits]
except subprocess.CalledProcessError:
args = [
'git',
'-C',
repo,
'describe',
'--tags',
]
return subprocess.check_output(args).rsplit('-', 2)[0:2]
def format_patch(repo, since):

View file

@ -17,6 +17,12 @@ def main(argv):
help="use 3-way merge to resolve conflicts")
args = parser.parse_args(argv)
# save the upstream HEAD so we can refer to it when we later export patches
git.update_ref(
repo='.',
ref='refs/patches/upstream-head',
newvalue='HEAD'
)
git.am(
repo='.',
patch_data=patch_from_dir(args.patch_dir),

View file

@ -102,6 +102,12 @@ def get_head_commit(repo):
return subprocess.check_output(args).strip()
def update_ref(repo, ref, newvalue):
args = ['git', '-C', repo, 'update-ref', ref, newvalue]
return subprocess.check_call(args)
def reset(repo):
args = ['git', '-C', repo, 'reset']