本意是想写一个可以通过python能自动同步项目,采用Repo方式,但后来遇到,当git分支需要进行切换时:repo = Repo(download_path)
repo.remote().pull()不同分支下,进行pull是没有意义的,思来想去最后决定,采用Repo三方工具的同时,利用git 本身的命令行模式进行切分支和代码更新实现起来更简单,也很通用,最终实现如下:try: import sys import os from git.repo import Repoexcept ImportError: import os os.system('pip3 install repo --quiet') os.system('pip3 install gitpython --quiet') os.system('pip3 install python-gitlab --quiet')class GitUtils: # pip install gitpython def clone_or_pull_project(): # 创建本地路径用来存放远程仓库下载的代码 download_path = os.path.join('{path}') gitBranch = '{branch}' print(download_path) print(os.path.exists(download_path)) if not os.path.exists(download_path): Repo.clone_from('http://{tokenName}:{gitToken}@{gitlaProjectUrl}.git', to_path=download_path, branch=gitBranch) else: cmd = 'cd ' + download_path + ' && ' + 'git fetch --all' + ' && ' + 'git checkout ' + gitBranch + ' && git pull' os.system(cmd) print('execd: ', cmd)tokenName、gitToken可以登录 项目git地址 Preferences → Access Tokens 进行设置
其中:Expiration date,默认一个月,按照实际需要进行配置,也可以清理永不失效

ps:后续计划将Repo的方式也全部切换为shell git命令,上下进行统一