37 lines
No EOL
1.1 KiB
Python
37 lines
No EOL
1.1 KiB
Python
#!/usr/bin/python3
|
|
|
|
import os
|
|
import re
|
|
import git
|
|
from pathlib import Path
|
|
|
|
|
|
def main():
|
|
main_branch='master'
|
|
|
|
cwd=Path(os.path.abspath(__file__)).parents[0]
|
|
repo=git.Repo(cwd)
|
|
repo.git.fetch('origin', '+refs/heads/*:refs/remotes/origin/*', '+refs/tags/*:refs/tags/*')
|
|
|
|
orig_tag=next((tag for tag in repo.tags if tag.commit == repo.head.commit), None)
|
|
if orig_tag is None:
|
|
raise Exception(f"no tag on current commit {repo.head.commit}")
|
|
|
|
release_tag=re.search('^(\d+.\d+.\d+)-.*',orig_tag.name)
|
|
if release_tag is None or release_tag[1] is None:
|
|
raise Exception(f"release_tag is None. Error")
|
|
|
|
print(f'release candidate tag name is {orig_tag.name}')
|
|
print(f'release tag name is {release_tag[1]}')
|
|
|
|
repo.git.checkout(main_branch)
|
|
repo.git.merge('--no-ff','-X','theirs','-m',f'"release {release_tag[1]}"',orig_tag.name)
|
|
repo.create_tag(release_tag[1],ref='HEAD', message=f'release {release_tag[1]}')
|
|
repo.git.push()
|
|
repo.git.push('--tags')
|
|
#git logf --first-parent master -n 2
|
|
|
|
print('finished successfully', flush=True)
|
|
|
|
if __name__ == '__main__':
|
|
main() |