GitHub自动化工具

GIT-Pilot是一个强大的GitHub自动化和管理工具,提供全面的GitHub操作API封装,简化仓库、拉取请求、问题等的管理。

  • by SiddheshDongare
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 siddheshdongare/git-pilot

使用说明

GIT飞行员

⭐️ If you find this project helpful, please give it a star! ⭐️

GIT-Pilot是一个强大的GitHub自动化和管理工具,为GitHub操作提供全面的API包装。它通过基于FastMCP的服务器简化了GitHub交互,使管理存储库、拉取请求、问题等变得容易。

🌟 特性

🔐 身份验证和安全

  • 使用Fernet加密进行安全令牌管理
  • 令牌过期和自动清理
  • 速率限制处理和自动重试
  • 可配置的身份验证超时

📦 库管理

  • 创建和管理存储库
  • 处理分支和提交
  • 文件操作(创建、更新、删除)
  • 存储库搜索和过滤
  • 提交比较和历史记录

🔄 拉取请求操作

  • 创建和管理pull请求
  • 合并策略(合并、挤压、重基)
  • 状态检查验证
  • 冲突检测和处理
  • PR支持草案

📝 问题管理

  • 创建和更新问题
  • 标签管理
  • 受让人处理
  • 评论管理
  • 问题搜索和过滤

🛠 技术特性

  • 线程安全操作
  • 资源管理
  • 全面的错误处理
  • 详细日志记录
  • 类型安全性
  • 配置管理
  • FastMCP服务器集成

🚀 入门指南

先决条件

  • Python 3.12或更高版本
  • GitHub账号
  • GitHub个人访问令牌
  • FastMCP命令行界面(可选)

安装

  1. 克隆存储库:
git clone https://github.com/yourusername/GIT-Pilot.git
cd GIT-Pilot
  1. 安装uv(如果尚未安装):
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 创建并激活虚拟环境:
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
  1. 使用uv安装软件包:
uv pip install -e .
  1. 设置环境变量: 创建一个 .env 项目根目录中的文件:
GITHUB_TOKEN=your_github_token_here

基本用法

设置Claude桌面集成

  1. 启动GIT Pilot服务器:
uv run main.py
  1. 下载并安装 克劳德桌面

  2. 配置Claude桌面:

    • 打开克劳德桌面
    • 首选 File > Settings > Developer > Edit Config
    • 添加以下配置:
{
    "mcpServers": {
        "GIT-Pilot": {
            "command": "uv",
            "args": [
                "--directory",
                "path\\to\\repo",
                "run",
                "main.py"
            ]
        }
    }
}
  1. 重新启动克劳德桌面
  2. 在聊天窗口中查找锤子图标-这表示MCP服务器已准备好使用

API示例

# Create a repository
await call_tool("create_repository",
    name="my-repo",
    description="My awesome repository",
    private=True,
    has_issues=True,
    has_wiki=True,
    has_projects=True,
    auto_init=True
)

# Create a pull request
await call_tool("create_pull_request",
    repo_path="owner/repo",
    title="New feature",
    head="feature-branch",
    base="main",
    body="Description of changes",
    draft=False
)

# List commits with filtering
await call_tool("list_commits",
    repo_path="owner/repo",
    branch="main",
    author="username",
    since="2024-01-01",
    until="2024-04-21",
    max_results=30
)

🔧 配置

该服务可以通过以下方式配置 Config 类别:

@dataclass
class Config:
    TOKEN_TTL_HOURS: int = 24
    MAX_STORED_TOKENS: int = 1000
    CLEANUP_INTERVAL_SECONDS: int = 3600
    MAX_RETRIES: int = 3
    RETRY_DELAY_SECONDS: int = 5
    MAX_RESULTS_PER_PAGE: int = 100
    ENCRYPTION_KEY: bytes = Fernet.generate_key()

🛡 安全

  • 令牌在静态时使用Fernet加密
  • 自动令牌过期和清理
  • 重试率限制保护
  • 输入验证
  • 全面的错误处理
  • 安全令牌清理

🔄 速率限制

该服务包括内置的速率限制处理:

  • 根据速率限制自动重试
  • 可配置的重试尝试
  • 重试之间的延迟
  • 速率限制状态记录
  • 指数退避

🧪 错误处理

全面的错误处理:

  • 身份验证失败
  • API错误
  • 费率限制
  • 无效输入
  • 资源冲突
  • 网络问题
  • 令牌验证
  • 文件 操作

📈 日志记录

详细日志记录:

  • 时间戳
  • 日志级别
  • 函数名
  • 行号
  • 错误详细信息
  • 堆栈复写
  • 费率限制信息
  • 代币操作

🤝 贡献

我们欢迎捐款!请按照以下步骤操作:

  1. 分叉存储库
  2. 创建要素分支
  3. 提交您的更改
  4. 推到分支
  5. 创建拉取请求

📝 许可证

此项目根据GNU通用公共许可证v3.0获得许可-请参阅 许可证 文件以获取详细信息。

🙏 致谢


由以下材料制成❤️ GIT飞行员团队