公司Gitlab上有一个项目文件夹,下面有20多个Git项目,要把它们一个个拉取下来比较费时,所以用Python写了一个脚本。
脚本代码
python
import requests
from git import Repo
import os
# GitLab地址
gitlab = "https://xxxx/api/v4/projects"
# token,在GitLab上面申请Access Token得到
token = "xxxx"
# 分页参数,一次性干他妈的50个,绝对查完
page = 1
per_page = 50
# 最后请求的url
url = "{}?private_token={}&page={}&per_page={}".format(gitlab, token, page, per_page)
# 项目存放地址
parentPath = "D:\\Projects\\MyPAth"
# 拉取代码后要切换的分支,是master就不用切换了
branch = "master"
def requestGitProjects():
# 请求
response = requests.get(url)
# 记录每个项目文件夹下的项目数量,最后判断对不对
backendCount = 0
frameworkCount = 0
mockCount = 0
if response.status_code == 200:
projects = response.json()
for project in projects:
# 得到git地址
http_url = project["http_url_to_repo"]
# 得到git项目名称
name = project["path"]
print(http_url)
path = parentPath + "\\" + name
# 去做Git操作
gitPull(http_url, path)
print("解析完成。")
else:
print("请求失败:", response.status_code)
def gitPull(gitUrl, path):
if os.path.exists(path):
print("文件夹已存在,跳过:", path)
return
# 拉代码和切换分支,异常说明没有内容或者没有分支,那就不管了
try:
repo = Repo.clone_from(gitUrl, path)
if "master" != branch:
repo.git.checkout(branch)
except Exception as e:
pass
# 执行代码
requestGitProjects()
Python环境准备
shell
# 脚本代码路径
cd xxx
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境,此处为Windows系统,如果是Linux则是二进制文件
\venv\Scripts\activate.bat
# 激活后则进入虚拟环境,安装所需要的依赖
(venv) pip install requests
(venv) pip install gitpython
# 运行代码
(venv) python demo.py