1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import os
- import subprocess
- import re
- def get_latest_tag():
- output = subprocess.check_output(['git', 'tag'])
- tags = output.decode('utf-8').split('\n')[:-1]
- latest_tag = sorted(tags, key=lambda t: tuple(map(int, re.match(r'v(\d+)\.(\d+)\.(\d+)', t).groups())))[-1]
- return latest_tag
- def update_version_number(latest_tag, increment):
- major, minor, patch = map(int, re.match(r'v(\d+)\.(\d+)\.(\d+)', latest_tag).groups())
- if increment == 'X':
- major += 1
- minor, patch = 0, 0
- elif increment == 'Y':
- minor += 1
- patch = 0
- elif increment == 'Z':
- patch += 1
- new_version = f"v{major}.{minor}.{patch}"
- return new_version
- def main():
- print("当前最近的Git标签:")
- latest_tag = get_latest_tag()
- print(latest_tag)
- print("请选择要递增的版本号部分(X, Y, Z):")
- increment = input().upper()
- while increment not in ['X', 'Y', 'Z']:
- print("输入错误,请输入X, Y或Z:")
- increment = input().upper()
- new_version = update_version_number(latest_tag, increment)
- print(f"新的版本号为:{new_version}")
- print("确认更新版本号并推送到远程仓库?(y/n)")
- confirmation = input().lower()
- if confirmation == 'y':
- subprocess.run(['git', 'tag', new_version])
- subprocess.run(['git', 'push', 'origin', new_version])
- print("新版本号已创建并推送到远程仓库。")
- else:
- print("操作已取消。")
- if __name__ == '__main__':
- main()
|