# git-manager **Repository Path**: swimly/git-manager ## Basic Information - **Project Name**: git-manager - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-24 - **Last Updated**: 2026-07-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Git 多源管理台 基于 Vue 3、Express 和 SQLite 的本地 Git 运维控制台,统一管理 Gitee、GitLab 及兼容 GitLab v4 API 的私有 Git 源。 ## 运行要求 - Node.js >= 22.5.0(使用 Node 内置 `node:sqlite`,不需要 `better-sqlite3`) - pnpm - 每个 Git 源一个 API Token;Token 只在服务端使用 ## 快速开始 复制环境模板并填写服务端密钥和初始管理员: ```bash copy .env.example .env pnpm.cmd install pnpm.cmd run dev ``` 打开 。首次启动时,如果 SQLite 还没有用户且同时配置了 `INITIAL_ADMIN_USERNAME` 和 `INITIAL_ADMIN_PASSWORD`,系统会创建一个管理员账号;之后不会重复初始化。 `APP_ENCRYPTION_KEY` 必须配置为服务端私密值,Git 源 Token 会使用 AES-256-GCM 加密后保存到 SQLite。可以用下面的命令生成随机值: ```bash node -e "console.log(require('crypto').randomBytes(32).toString('hex'))" ``` 默认数据库路径是 `data/git-manager.sqlite`,可通过 `DATABASE_PATH` 修改。生产环境不要把 `.env`、SQLite 文件或 Token 提交到版本库。 ## 多 Git 源配置 推荐使用 `GIT_SOURCES_JSON` 配置多个源,示例: ```env APP_ENCRYPTION_KEY=replace-with-a-server-secret INITIAL_ADMIN_USERNAME=admin INITIAL_ADMIN_PASSWORD=change-this-password GIT_SOURCES_JSON=[{"id":"gitee-main","name":"Gitee 主源","type":"gitee","apiBase":"https://gitee.com/api/v5","webBase":"https://gitee.com","token":"gitee-token"},{"id":"team-gitlab","name":"团队 GitLab","type":"gitlab","apiBase":"https://git.example/api/v4","webBase":"https://git.example","token":"gitlab-token","gitUsername":"oauth2"}] ``` 也兼容 `GITEE_ACCESS_TOKEN`、`GITEE_API_BASE` 和 `GITEE_GIT_USERNAME` 的单 Gitee 配置。环境变量中的源会在启动时加密导入,之后可以在“Git 源”页面维护。 ## 控制台能力 - 登录、HttpOnly Session Cookie,以及管理员、运维、只读三类角色。 - 多源 CRUD、连接测试、启停管理和脱敏展示。 - 仓库查询、创建、编辑、归档、删除确认、转移和派生。 - 组织/群组与项目成员查询、添加、角色修改、移除和批量任务。 - 持久化任务中心:进度、失败明细、重试、取消和失败隔离。 - 审计日志:记录源、仓库、成员和任务操作,敏感字段服务端脱敏。 - 旧 Gitee 仓库、成员、批量处理、镜像迁移、单向同步和工作空间 API 继续保留兼容入口。 浏览器只访问 `/api/*`,不会收到 Git Token 或可复用的 Provider 凭据。服务端仍会对每个写操作执行最终 RBAC 校验,前端权限判断只用于控制界面显示。 ## 常用命令 ```bash pnpm.cmd test pnpm.cmd typecheck pnpm.cmd run build ``` `pnpm.cmd` 适用于 Windows PowerShell;其他环境可使用对应的 `pnpm` 命令。SQLite 在 Node 22 中仍会输出实验性 API 警告,这是运行时提示,不是应用错误。 ## 同步边界 镜像迁移和同步执行 Git refs。双向同步由两个单向任务组成,使用前需要明确分支保护、默认分支、强制推送、重写 Tag、LFS、CI 变量、发布物、Issue 和 Wiki 的冲突策略;这些元数据不会自动双向合并。