GitPython SDK调用示例(一)——init remote project

479 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

先从命令来看

本段代码相当于以下git命令:

# 先配置用不和邮箱,不用--global,防止部分仓库要使用其他账号
git config user.name "latiaomei"
git config user.email "latiaomei@xx.com"

# 通过本地目录初始化remote project
cd existing_folder
git init
git remote add origin http://{username}:{password}@xxxx.git
git add .
git commit -m "commit message"
git push -u origin master

如何使用GitPython SDK实现以上功能?

代码示例:

# coding=utf-8
import os
os.environ["GIT_PYTHON_GIT_EXECUTABLE"] = "/usr/bin/git"    # 处理环境问题,要放在from git import xxx之前

from git import Repo
from git import Actor

def init_remote_project(project_name):
    repo_dir = '/home/admin/git_repo'    # 自定义存放地址
    repo_path = os.path.join(repo_dir, project_name)

    repo = Repo.init(repo_path)  # git init
    # print(type(repo))   # <class 'git.repo.base.Repo'>

    # 配置用户信息
    # git config user.name "latiaomei"
    # git config user.email "latiaomei@xx.com"
    repo.config_writer().set_value("user", "name", "latiaomei").release()
    repo.config_writer().set_value("user", "email", "latiaomei@xx.com").release()

    repo.index.add([file_name])             # git add
    repo.index.commit("commit message")     # git commit -m "commit message"

    origin_url = "http://{0}:{1}@xxxx.git".format("latiaomei", "latiaomei_password")

    repo.create_remote('origin', origin_url)    # git remote add
    repo.git.push('origin', 'master')          # git push origin master

    return

踩坑点说明

  1. 首先,目标环境是需要已经安装过git的,如果你使用的是一个非常简易的基础镜像/操作系统,没有安装git,那连命令行的操作都无法执行,sdk当然也无法使用
  2. 应用GitPython库的时候可能会报以下错误,按照报错提示的三种方式去处理就行,比如我的例子里面就在from git import xxx之前设置了环境变量
ImportError: Failed to initialize: Bad git executable.
The git executable must be specified in one of the following ways:
    - be included in your $PATH
    - be set via $GIT_PYTHON_GIT_EXECUTABLE
    - explicitly set via git.refresh()
os.environ["GIT_PYTHON_GIT_EXECUTABLE"] = "/usr/bin/git"   
  1. 注意remote的url里面要带git用户名和密码,首次手动执行git命令的时候,一般url不带用户名密码,因为会以交互式的shell提示你去输入。

参考文献