Spaces:
Running
Running
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() | |