python获取git所有项目

import gitlab
import os
import pandas as pd

# 获取当前用户的桌面路径
desktop_path = os.path.join(os.path.expanduser("~"), "Desktop")
# 配置GitLab连接信息
private_host = 'gg'   #放置你的gitlab的地址
private_token = 'gg'   # 放置你gitlab的accesstoken
 
client = gitlab.Gitlab(private_host, private_token=private_token)

# 获取所有项目(分页获取)
projects = client.projects.list(all=True, iterator=True)


# 用于存储数据的列表
data = []

# 处理项目信息,逐个显示项目名称和所属空间
for project in projects:
    project_name = project.name
    project_path = project.path
    project_web_url = project.web_url
    project_pace_url = project.web_url.replace("gg", "")   #这个gg是代指你的gitlab地址用作替换用的

    # 将每个项目的信息作为字典加入数据列表
    data.append({
        "项目名称": project_name,
        "空间": project_pace_url,
        "GIT地址": f"{project_web_url}.git",
    })

df = pd.DataFrame(data)

# 设置Excel文件保存路径
excel_file_path = os.path.join(desktop_path, "projects_info.xlsx")

# 将DataFrame保存为Excel文件
df.to_excel(excel_file_path, index=False)

print(f"数据已成功导出到 Excel 文件:{excel_file_path}")

这个会在你的桌面生成excel 四列分别是项目名称所处空间,git地址 

附上git代码project后的参数含义
 

id - 项目的唯一 ID。
name - 项目的名称。
path - 项目的路径(即项目的短名称)。
description - 项目的描述。
namespace - 项目所属的命名空间。包含了 name(命名空间名称)、path(命名空间路径)和 kind(命名空间类型,可能是 user 或 group)。
web_url - 项目的 Web 地址。
ssh_url_to_repo - 用于通过 SSH 协议访问该项目的 URL。
http_url_to_repo - 用于通过 HTTP 协议访问该项目的 URL。
readme_url - 项目 README 文件的 URL(如果有的话)。
created_at - 项目的创建时间。
last_activity_at - 项目的最后一次活动时间。
visibility - 项目的可见性(如 private、internal、public)。
archived - 项目是否被归档,True 或 False。
star_count - 项目获得的星标数量。
forks_count - 项目被 fork 的次数。
open_issues_count - 项目的未解决问题数。
merged_mrs_count - 项目合并的 Merge Request 数量。
license - 项目的许可证信息(如果有的话)。
owner - 项目的拥有者(如果是个人用户,则为用户信息;如果是组,则为组信息)。
topics - 项目的主题标签列表。
default_branch - 项目的默认分支。
repository_size - 项目的仓库大小(字节)。
tag_list - 项目的标签列表。
issues_enabled - 项目是否启用问题追踪。
merge_requests_enabled - 项目是否启用合并请求功能。
wiki_enabled - 项目是否启用 Wiki 功能。
snippets_enabled - 项目是否启用 Snippets 功能。
service_desk_enabled - 项目是否启用服务台功能。
visibility_level - 项目的可见性级别(例如,private、internal、public)。
namespace 字段(嵌套在 project 中)
name - 命名空间名称(通常是用户或组的名称)。
path - 命名空间路径(可以是组或用户的路径)。
kind - 命名空间的类型,可能是 user 或 group,用于区分项目所属是用户还是组。
full_path - 命名空间的完整路径(包括所有父级组路径)。

### PythonGit 结合使用的项目示例与教程 #### 使用 GitPython 执行 Git 操作 对于希望利用 Python 脚本化 Git 操作的开发者来说,GitPython 是一个非常有用的工具。通过这个库可以方便地在 Python 中调用 Git 命令来管理和操作 Git 仓库。除了基础的操作外,还提供了多种高级功能用于处理复杂的 Git 流程[^1]。 ```python import git repo_path = '/path/to/repo' repo = git.Repo(repo_path) # 获取当前分支名称 print(f'Current branch is {repo.active_branch}') # 查看最近一次提交的信息 last_commit = repo.head.commit print(last_commit.message) ``` #### 分析 Git 日志数据 当涉及到对历史记录或者开发进度进行统计分析时,可以通过 Python 来解析 `git log` 输出的内容。这允许自动化提取有价值的元数据,比如作者、日期以及更改详情等信息,从而帮助团队更好地理解项目的演变过程[^2]。 ```python from subprocess import check_output def get_git_log(path_to_repo): logs = [] output = check_output(['git', '-C', path_to_repo, 'log']).decode('utf-8') entries = output.split('\n\n') for entry in entries: lines = entry.strip().splitlines() if not lines: continue commit_info = {} for line in lines: key, _, value = line.partition(': ') commit_info[key.lower()] = value logs.append(commit_info) return logs project_logs = get_git_log('/home/user/project') for log_entry in project_logs[:5]: print(log_entry['author'], ':', log_entry.get('summary')) ``` #### 正确配置 `.gitignore` 文件 为了确保特定类型的文件不会意外进入版本控制系统,在初始化一个新的 Git 库之前应该先定义好 `.gitignore` 文件。需要注意的是,一旦某个文件已经被追踪过,即使后来将其路径加入到 `.gitignore` 列表里也不会自动停止跟踪该文件;此时需手动移除这些已跟踪项后再重新应用忽略规则[^3]。 ```bash echo "*.pyc" >> .gitignore echo "__pycache__/" >> .gitignore git rm --cached -r . git add . git commit -m "Update .gitignore and untrack previously ignored files" ``` #### 学习资源推荐 针对初学者而言,《Python学习笔记》中的章节专门介绍了如何安装配置 Git 并执行常见的命令行指令,同时也涵盖了更多关于分支管理等方面的知识点[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值