https://github.com/soomtong/gluck
git log unfolds code into knowledge.
https://github.com/soomtong/gluck
deepseek git log opencode rust vibe
Last synced: 22 days ago
JSON representation
git log unfolds code into knowledge.
- Host: GitHub
- URL: https://github.com/soomtong/gluck
- Owner: soomtong
- License: mit
- Created: 2026-05-21T15:57:45.000Z (23 days ago)
- Default Branch: main
- Last Pushed: 2026-05-22T00:52:47.000Z (23 days ago)
- Last Synced: 2026-05-22T00:55:51.628Z (23 days ago)
- Topics: deepseek, git, log, opencode, rust, vibe
- Language: Rust
- Homepage:
- Size: 307 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# gluck
[](https://github.com/soomtong/gluck)
[](https://www.rust-lang.org)
[](LICENSE)
> **g**it **l**og, **u**nfolds **c**ode into **k**nowledge.
>
> 커밋 로그라는 시간의 주름을 따라 접힌 코드가 펼쳐진다 — 읽고, 비교하고, 이해하는 행위 끝에 지식이 남는다.
>
> 바이너리 이름 `glc`는 손가락이 기억하는 명령어: home row에서 벗어나지 않고 `g l c`.
> **gluck**은 그 뒤에 *u*nfolding과 *k*nowing을 더한, 프로젝트의 온전한 이름이다.
**Git history file viewer** — 터미널에서 git history의 파일을 탐색하고 읽는 TUI 도구.
## 설치
### Cargo
```bash
cargo install --git https://github.com/soomtong/gluck
```
### Homebrew (macOS, Apple Silicon)
> Intel Mac(x86_64)용 바이너리는 GitHub Actions 지원 중단으로 제공하지 않습니다.
> Intel Mac 사용자는 아래 Cargo 설치 방법을 이용해 주세요.
```bash
brew tap soomtong/tap
brew install glc
```
### Linux (직접 빌드)
Linux용 바이너리는 별도로 제공되지 않습니다. Rust 툴체인이 설치되어 있다면 직접 빌드할 수 있습니다.
```bash
cargo install --git https://github.com/soomtong/gluck
```
또는 소스를 받아 빌드:
```bash
git clone https://github.com/soomtong/gluck
cd gluck
cargo build --release
# 빌드 결과: ./target/release/glc
```
## 사용법
```bash
glc # 현재 디렉토리의 git history 열기
glc /path/to/repo # 특정 저장소 열기
```
### Pick 모드 — 커밋 탐색
| 키 | 동작 |
|----|------|
| `j` / `k` / `↑` / `↓` | 커밋 이동 |
| `Enter` / `l` | 선택 커밋 View 모드 |
| `Tab` | 선택 커밋 Diff 모드 |
| `.` | .gitignore 파일 필터 토글 |
| `/` | 커밋 검색 |
| `^T` | 색상 테마 전환 |
| `q` | 종료 |
### View 모드 — 파일 읽기
| 키 | 동작 |
|----|------|
| `j` / `k` / `↑` / `↓` | 파일 트리 이동 |
| `u` / `d` | 내용 스크롤 (3줄) |
| `J` / `K` | 내용 페이지 스크롤 |
| `Tab` | Diff 모드 전환 |
| `Esc` / `h` | Pick 모드 |
| `^N` / `^P` | 다음/이전 커밋 이동 |
| `^T` | 색상 테마 전환 |
| `q` | 종료 |
### Diff 모드 — 변경 비교
| 키 | 동작 |
|----|------|
| `j` / `k` / `↑` / `↓` | 변경 파일 이동 |
| `h` / `l` / `←` / `→` | 변경 파일 이동 |
| `u` / `d` | diff 내용 스크롤 (3줄) |
| `J` / `K` | diff 내용 페이지 스크롤 |
| `s` | side-by-side / unified 토글 |
| `Tab` | View 모드 |
| `Esc` | Pick 모드 |
| `^N` / `^P` | 다음/이전 커밋 쌍 이동 |
| `^T` | 색상 테마 전환 |
| `q` | 종료 |
## 설정
설정 파일은 XDG config 경로에 저장됩니다.
- **macOS**: `~/Library/Application Support/gluck/config.toml`
- **Linux**: `~/.config/gluck/config.toml`
```toml
[theme]
# 색상 테마: plain (기본), catppuccin, tokyo-night, nord, gruvbox, one-light
name = "plain"
[ui]
# u/d 키 스크롤 줄 수 (기본: 3)
scroll_lines = 3
```
## 배경
오픈소스 프로젝트를 공부할 때 가장 좋은 방법 중 하나는 git history를 따라가며 코드가 어떻게 변해왔는지 읽는 것이다. 하지만 기존 도구들은 각각 한계가 있다:
- **git log / git show** — 변경사항은 볼 수 있지만 해당 시점의 전체 파일을 읽기 불편하다
- **tig** — log 탐색에 훌륭하지만 파일 뷰어로는 부족하다
- **GitHub/GitLab** — 브라우저가 필요하고 커밋 간 이동이 느리다
gluck은 git history를 타임라인으로 삼아, 각 시점의 파일을 읽고 비교하는 데 집중한다.
## 핵심 기능
### Git log 탐색 (Pick)
- 커밋 리스트를 탐색하고 선택
- 파일 단위로 변경 이력 필터링
- 커밋 메시지, 작성자, 날짜 기반 검색
### View 모드
- 선택한 커밋 시점의 전체 파일 내용 조회
- 파일 트리 탐색 (해당 커밋 기준)
- syntax highlight 지원
### Diff 모드
- 두 커밋 간 변경사항 비교 (side-by-side / unified)
- 파일 단위 diff, 특정 함수/블록 단위 diff
- 변경된 파일만 필터링하여 보기
### Syntax Highlight
- 주요 언어 syntax highlight
- 터미널 색상 테마 지원
## 사용 시나리오
- 오픈소스 프로젝트를 처음 공부할 때 초기 커밋부터 따라가며 코드 읽기
- 특정 기능이 언제, 어떻게 추가되었는지 추적
- 버그 수정 커밋을 찾아 어떤 변경이 있었는지 확인
- 프로젝트 문서(history 내 README, docs 등)의 변천사 읽기
## 기술 방향
- Terminal 전용 TUI 도구
- 로컬 git repository 기반 동작
## 영감 / 참고
- [tig](https://github.com/jonas/tig) — ncurses 기반 git viewer
- [gitui](https://github.com/extrawurst/gitui) — Rust 기반 terminal git UI
- [delta](https://github.com/dandavison/delta) — syntax-highlighted diff viewer