# GitLite **Repository Path**: lfdevs/GitLite ## Basic Information - **Project Name**: GitLite - **Description**: 一个基于JGit的轻量级团队代码托管平台,提供 Git 仓库管理、代码审查、Issue 跟踪和 AI 代码助手等功能。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-17 - **Last Updated**: 2026-07-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: jgit, Git, SpringBoot, Vue, Kotlin ## README # GitLite - 基于 Git 的团队代码托管平台 一个功能完整的团队代码托管平台,提供 Git 仓库管理、代码审查、Issue 跟踪和 AI 代码助手等功能。 ## 技术栈 ### 后端 - **语言**: Kotlin - **框架**: Spring Boot 3 - **数据库**: MySQL 8 - **Git 库**: JGit - **认证**: JWT - **包名**: `com.lfdevs.gitlite` ### 前端 - **框架**: Vue 3 + TypeScript - **UI 库**: Element Plus - **状态管理**: Pinia - **路由**: Vue Router - **HTTP 客户端**: Axios - **Markdown 渲染**: marked - **代码高亮**: highlight.js ## 功能特性 ### 用户系统 - [x] 用户注册/登录/登出 - [x] JWT 令牌认证 - [x] 用户资料管理 - [x] 角色权限(管理员/普通用户/访客) ### 仓库管理 - [x] 创建 Git 仓库 - [x] 公开/私有可见性 - [x] 文件树浏览 - [x] 代码查看与语法高亮 - [x] README 自动渲染 - [x] 分支管理 - [x] 提交历史查看 - [x] 提交详情(代码增删对比) ### 协作功能 - [x] Issue 跟踪系统 - [x] Issue 评论 - [x] Pull Request - [x] PR 代码差异对比 - [x] PR 评论与评审 - [x] PR 合并功能 - [x] 协作者管理 ### AI 功能 - [x] AI 代码对话 - [x] 基于文件内容的问答 - [x] 管理员配置 AI API Key ### Git 协议支持 - [x] HTTP 协议克隆 - [x] HTTP 协议拉取 - [x] HTTP 协议推送 - [x] Basic Auth 认证 ## 项目结构 ``` GitLite/ ├── backend/ # 后端项目 │ ├── build.gradle │ ├── settings.gradle │ ├── gradlew │ └── src/main/kotlin/com/lfdevs/gitlite/ │ ├── GitLiteApplication.kt │ ├── config/ # 配置类 │ ├── controller/ # REST 控制器 │ ├── dto/ # 数据传输对象 │ ├── entity/ # JPA 实体 │ ├── repository/ # 数据访问层 │ ├── security/ # 安全认证 │ └── service/ # 业务逻辑层 ├── frontend/ # 前端项目 │ ├── package.json │ ├── vite.config.ts │ └── src/ │ ├── api/ # API 调用 │ ├── components/ # 组件 │ ├── router/ # 路由配置 │ ├── stores/ # Pinia 状态 │ ├── utils/ # 工具函数 │ └── views/ # 页面视图 ├── database/ # 数据库脚本 │ └── schema.sql └── docs/ # 文档 ├── API 接口文档.md └── 部署文档.md ``` ## 快速开始 > 推荐优先使用 **Docker Compose 一键部署**。单独部署(前后端/数据库分开安装)作为第二种方式。 ### 方式一(推荐):Docker Compose 部署 #### 环境要求 - Docker 20+ - Docker Compose v2+ #### 启动 ```bash cd /path/to/GitLite cp .env.example .env # 可选:按需修改密码、JWT、AI Key 等配置 docker compose up -d --build ``` #### 访问 - 前端地址:http://localhost:3000 - 后端地址:http://localhost:8080 - MySQL:localhost:3308 - 默认管理员:`admin` / `admin123` > Compose 已将 MySQL 服务固定为 `utf8mb4` 字符集,配合 `schema.sql` 的编码设置可避免全新部署时中文乱码。 #### 停止 ```bash docker compose down ``` --- ### 方式二:单独部署(开发/自定义环境) #### 环境要求 - JDK 17+(推荐 JDK 17) - MySQL 8+ - Node.js 18+ - Gradle 8.12+(项目已包含 Gradle Wrapper) #### 1) 数据库初始化 ```bash mysql --default-character-set=utf8mb4 -u root -p < database/schema.sql ``` > 注意:无论是本机 MySQL 还是容器端口映射,手工导入 `schema.sql` 时都建议显式带上 `--default-character-set=utf8mb4`,避免中文被错误解码。 #### 2) 启动后端 ```bash cd gitlite-backend # 配置环境变量 export MYSQL_PASSWORD=your_password export GITLITE_REPOS_PATH=/path/to/repos # 使用 Gradle Wrapper 运行 ./gradlew bootRun # 或者构建后运行 ./gradlew bootJar java -jar build/libs/gitlite-*.jar ``` #### 3) 启动前端 ```bash cd gitlite-frontend npm install npm run dev ``` #### 4) 访问系统 - 前端地址:http://localhost:3000 - 后端地址:http://localhost:8080 - 默认管理员:`admin` / `admin123` ## API 文档 详细 API 文档请查看 [API 接口文档.md](docs/API 接口文档.md) ### 主要接口 | 模块 | 接口 | 描述 | |------|------|------| | 认证 | POST /api/auth/register | 用户注册 | | 认证 | POST /api/auth/login | 用户登录 | | 仓库 | GET /api/repositories | 获取仓库列表 | | 仓库 | POST /api/repositories | 创建仓库 | | 文件 | GET /api/repositories/{id}/tree | 获取文件树 | | 文件 | GET /api/repositories/{id}/blob | 获取文件内容 | | Issue | GET /api/repositories/{id}/issues | 获取 Issue 列表 | | Issue | POST /api/repositories/{id}/issues | 创建 Issue | | PR | GET /api/repositories/{id}/pull-requests | 获取 PR 列表 | | PR | POST /api/repositories/{id}/pull-requests | 创建 PR | | AI | POST /api/ai/chat | AI 对话 | ## Git 远程操作 ### 克隆仓库 ```bash git clone http://localhost:8080/git/username/repo.git ``` ### 推送代码 ```bash git push http://localhost:8080/git/username/repo.git main ``` ## 部署 详细部署文档请查看 [部署文档.md](docs/部署文档.md) ### 推荐:Docker Compose 一键部署 ```bash cd /path/to/GitLite cp .env.example .env # 可选 docker compose up -d --build ``` ### 备用:单独部署 可按需选择: - 后端:systemd / 直接运行 jar - 前端:Nginx 静态部署 / Docker 单容器 - 数据库:本机 MySQL 或托管 MySQL 具体步骤见:`docs/部署文档.md` 中的“方式二:单独部署”。 ## 开发说明 ### 后端开发 - 使用 Kotlin 编写,遵循 Spring Boot 规范 - JPA 用于数据持久化 - JGit 处理 Git 操作 - JWT 用于无状态认证 ### 前端开发 - Vue 3 Composition API - TypeScript 类型安全 - Element Plus UI 组件 - Axios HTTP 客户端 ## 安全考虑 1. 密码使用 BCrypt 加密 2. JWT 令牌认证 3. 权限控制(仓库所有者/协作者/访客) 4. CORS 配置 5. SQL 注入防护(JPA 参数化) ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request! --- **GitLite** - 让团队协作更高效