1、安装git、设置git 临时缓存账号密码
git config --global credential.helper 'cache --timeout=3600'
2、使用git 拉取一个项目并输入用户名密码用于缓存
git clone http://173.18.34.2:8929/syjzh/ywq/b06-tyjc/tyjc-server.git
##输入用户名和密码、之后修改运行下面脚本
import os
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
import subprocess
# 忽略不安全请求警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
# GitLab访问令牌
access_token = 'glpat-s8U2SnxfCwxs3EmipYFz'
# GitLab实例URL
gitlab_url = 'https://173.18.34.2:8929'
# API请求头
headers = {
'Private-Token': access_token
}
# 分页参数
per_page = 100
page = 1
# 存储所有项目
all_projects = []
while True:
# 获取当前页面的项目
response = requests.get(
f'{gitlab_url}/api/v4/projects',
headers=headers,
params={'per_page': per_page, 'page': page},
verify=False
)
# 检查响应状态码
if response.status_code != 200:
print(f'Error: Received status code {response.status_code}')
break
# 将当前页面的项目添加到all_projects列表中
projects = response.json()
if not projects:
break
all_projects.extend(projects)
# 检查是否有下一页
next_page = response.headers.get('X-Next-Page')
if not next_page:
break
# 更新分页参数
page = int(next_page)
# 输出获取到的项目列表
print(f"Total projects found: {len(all_projects)}")
for project in all_projects:
project_id = project['id']
project_name = project['name']
project_path_with_namespace = project['path_with_namespace']
project_http_url = project['http_url_to_repo'] # 使用HTTP URL
# 将路径中的斜杠替换为破折号
safe_path = project_path_with_namespace.replace('/', '-')
# 创建目录,加上项目ID
directory_path = f"{project_id}_{safe_path}"
os.makedirs(directory_path, exist_ok=True)
# 克隆项目到目录中
print(f'Cloning {project_name} into {directory_path}...')
try:
subprocess.check_call(['git', 'clone', project_http_url, directory_path])
except subprocess.CalledProcessError as e:
print(f'Failed to clone {project_name}: {e}')