searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

记一次python同步git代码随笔

2023-05-12 01:25:33
22
0
本意是想写一个可以通过python能自动同步项目,采用Repo方式,
但后来遇到,当git分支需要进行切换时:
repo = Repo(download_path)
repo.remote().pull()
不同分支下,进行pull是没有意义的,思来想去最后决定,采用Repo三方工具的同时,利用git 本身的命令行模式进行切分支和代码更新实现起来更简单,也很通用,最终实现如下:
try:
    import sys
    import os
    from git.repo import Repo
except  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命令,上下进行统一
0条评论
作者已关闭评论
蚊子也怕冷
5文章数
0粉丝数
蚊子也怕冷
5 文章 | 0 粉丝
蚊子也怕冷
5文章数
0粉丝数
蚊子也怕冷
5 文章 | 0 粉丝
原创

记一次python同步git代码随笔

2023-05-12 01:25:33
22
0
本意是想写一个可以通过python能自动同步项目,采用Repo方式,
但后来遇到,当git分支需要进行切换时:
repo = Repo(download_path)
repo.remote().pull()
不同分支下,进行pull是没有意义的,思来想去最后决定,采用Repo三方工具的同时,利用git 本身的命令行模式进行切分支和代码更新实现起来更简单,也很通用,最终实现如下:
try:
    import sys
    import os
    from git.repo import Repo
except  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命令,上下进行统一
文章来自个人专栏
脚本
1 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0