mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Add initial script to aid in cherrypicking from devel to stable-2.2
This commit is contained in:
parent
9ddcf16b4b
commit
8f6009de0f
1 changed files with 52 additions and 0 deletions
52
hacking/cherrypick.py
Executable file
52
hacking/cherrypick.py
Executable file
|
@ -0,0 +1,52 @@
|
||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import tempfile
|
||||||
|
|
||||||
|
import sh
|
||||||
|
|
||||||
|
REPO_PATH = {'extras': '/srv/ansible/stable-2.2/lib/ansible/modules/extras',
|
||||||
|
'core': '/srv/ansible/stable-2.2/lib/ansible/modules/core'}
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
commit_hash = sys.argv[1]
|
||||||
|
which_modules = sys.argv[2]
|
||||||
|
git = sh.git.bake('--no-pager', _tty_out=False)
|
||||||
|
try:
|
||||||
|
# Get the change
|
||||||
|
git('checkout', 'devel')
|
||||||
|
patch = git('format-patch', '-1', '--stdout', commit_hash).stdout
|
||||||
|
finally:
|
||||||
|
git('checkout', '-')
|
||||||
|
|
||||||
|
# Transform the change for the new repo
|
||||||
|
patch = patch.replace(b'lib/ansible/modules/', b'')
|
||||||
|
new_patch = []
|
||||||
|
patch_stream = (l for l in patch.split(b'\n'))
|
||||||
|
for line in patch_stream:
|
||||||
|
if line.strip() == b'---':
|
||||||
|
new_patch.append(b'(cherry picked from %s)' % commit_hash.encode('utf-8'))
|
||||||
|
new_patch.append(line)
|
||||||
|
break
|
||||||
|
new_patch.append(line)
|
||||||
|
new_patch.extend(list(patch_stream))
|
||||||
|
|
||||||
|
# Save the patch
|
||||||
|
try:
|
||||||
|
fh, patchfilename = tempfile.mkstemp()
|
||||||
|
os.write(fh, b'\n'.join(new_patch))
|
||||||
|
os.close(fh)
|
||||||
|
|
||||||
|
# Apply the patch
|
||||||
|
try:
|
||||||
|
orig_dir = os.getcwd()
|
||||||
|
os.chdir(REPO_PATH[which_modules])
|
||||||
|
git('am', patchfilename)
|
||||||
|
finally:
|
||||||
|
os.chdir(orig_dir)
|
||||||
|
except:
|
||||||
|
print("Problem occurred. Patch saved in: {}".format(patchfilename))
|
||||||
|
else:
|
||||||
|
os.remove(patchfilename)
|
||||||
|
|
Loading…
Reference in a new issue