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()