lucasdevco/gitview
GitHub: lucasdevco/gitview
gitview 是一款本地运行的 Git 仓库分析工具,将提交历史、代码热点、所有权分布和函数演进等信息以 Web 界面呈现,帮助开发者理解项目脉络并辅助维护决策。
Stars: 0 | Forks: 0
# gitview
[English](./README.md) | [简体中文](./README.zh-CN.md)
探索任何本地 Git 仓库的贡献历史、代码热点、所有权及函数演进。仅需单一二进制文件,无需账户,所有数据均在本地处理。
## 为什么使用 gitview?
Git 包含的不仅仅是一份提交列表。它可以帮助解答实际的维护问题:
- 谁最了解代码库的这一部分?
- 哪些文件经常变动并存在集中的所有权风险?
- 是什么导致了某个月份活动的激增?
- 某个函数是如何演进的?哪些提交塑造了它?
- 维护者或新贡献者应该从哪里开始阅读代码?
gitview 将本地 Git 历史转化为一个专注的 Web 界面。它的设计初衷是为了理解和维护项目,而非用于对开发者的个人绩效进行排名。
## 功能
- **仓库概览** — 提交、贡献者、新增、删除、代码变动、月度趋势以及近期活动。
- **贡献者详情** — 活动时间线、主要路径,以及每位贡献者历史背后的提交。
- **文件热点** — 基于变更频率和代码变动的显式评分,查找频繁变更的文件。
- **代码所有权** — 审查历史所有者、近期维护者、贡献份额以及估算的巴士因子。
- **函数历史** — 浏览函数、复杂度、热点、贡献者,以及跨 Go、JavaScript/TypeScript、Python、Java 和 Rust 语言的推测性变更历史。
- **分支与提交** — 审查分支状态、工作区变更、提交元数据以及差异。
- **版本比较** — 跨总计、贡献者、文件和提交比较两个 Git 版本。
- **月度解释** — 通过推动活动变化的贡献者、路径和提交来解释活动的变动。
- **精准过滤** — 按作者日期和仓库路径缩小分析范围;过滤器会被保留在 URL 中。
- **提供英文和简体中文界面**。
## 快速开始
### 前置条件
- Go 1.26+
- Node.js 20.19+ 或 22.12+
- Git
- 用于 Tree-sitter Go 绑定的 C 编译器
### 从源码构建
```
git clone https://github.com/lucasdevco/gitview.git
cd gitview
cd frontend && npm ci && cd ..
make build
```
`make build` 会编译 React 前端,将其嵌入到 Go 二进制文件中,并生成 `./gitview`。
### 分析仓库
```
# 分析当前 repository
./gitview serve
# 分析另一个本地 repository
./gitview serve /path/to/repository
# 使用不同的 port
./gitview serve --port 9090 /path/to/repository
```
打开 [http://127.0.0.1:8080](http://127.0.0.1:8080)。传入 `--port 0` 可让操作系统自动选择一个可用端口。
gitview 有意仅监听本地回环地址。它不提供 `--host` 选项。
## 工作原理
gitview 通过系统 Git 可执行文件读取仓库元数据和历史记录,在内存中计算分析结果,并从同一个二进制文件中提供嵌入的 React 应用。
- 仓库代码、hooks 和构建脚本不会被执行。
- 无需账户或外部服务。
- 仓库数据完全保留在本地机器上。
- 分析结果会区分直接的 Git 事实与推导或近似指标。
## 当前限制
- 函数级分析支持 Go、JavaScript/TypeScript、Python、Java 和 Rust;其他语言将回退到文件级分析。
- 函数历史标记为“推测性”;移动、重命名和边界变更可能无法被精确追踪。
- 分析重点在于可从所选分支或版本到达的历史记录。
- 目前尚无持久化索引、后台监视器、多仓库模式或 GitHub/GitLab 集成。
- 暂不支持 JSON/CSV 导出和静态报告。
请查看 [路线图](./docs/roadmap.md) 了解计划中的工作。
## 开发
在本地开发时分别运行后端和前端:
```
# Terminal 1:启动 Go API server
go run ./cmd/gitview serve /path/to/repository
# Terminal 2:启动 Vite,将 /api 代理到 127.0.0.1:8080
cd frontend
npm run dev
```
要在源码变更后自动重新构建:
```
make watch
```
实用的检查命令:
```
make test
make check
```
## 项目结构
```
cmd/gitview/ CLI entry point and server lifecycle
internal/gitrepo/ System Git adapter
internal/overview/ Repository, contributor, file, ownership, and comparison analysis
internal/function/ Tree-sitter function parsing and history analysis
internal/server/ Local HTTP API and SPA delivery
internal/web/ Embedded frontend assets and backend-only fallback
frontend/ React, TypeScript, Vite, Tailwind CSS, and shadcn/ui application
docs/ Product requirements, metric definitions, architecture, and roadmap
```
## 文档
- [文档索引](./docs/README.md)
- [产品需求](./docs/product-requirements.md)
- [指标定义](./docs/metrics.md)
- [技术设计](./docs/technical-design.md)
- [UI 交互](./docs/ui-interaction.md)
- [路线图](./docs/roadmap.md)
- [开放问题与决策](./docs/open-questions.md)
## 致谢
产品结构和本地优先的呈现方式受到了 [agentsview](https://github.com/kenn-io/agentsview) 的启发。
标签:Git, Mutation, 代码分析, 凭证管理, 可视化, 日志审计, 网络安全研究, 自动化攻击