Putra Wibisono
← Return to Projects & Research Index
Engineering Project

Gitlet — Distributed Version Control System in Java

Content-addressable persistence, O(n) branching data structures, and historical commit restoration.

FIG. 4.1 — GITLET VERSION CONTROL COMMIT GRAPH & O(n) BRANCHING (JAVA) init checkout merge HEAD (O(n) Branching)

Context & Engineering Scope

A Java implementation of core Git version-control functionality using content-addressable file persistence, object serialization, and O(n) complexity branching.

Replicating Git from scratch in Java requires designing efficient persistence mechanisms and graph data structures that support fast branching and historical file restoration.

Methodology & System Design

  1. 01. Command Abstraction (`java main.Gitlet`): Implemented core version-control commands including `init`, `add`, `commit`, `checkout`, `status`, `log`, and `merge`.
  2. 02. O(n) Branching Data Structures: Selected and implemented data structures providing branching operations with O(n) complexity.
  3. 03. Deterministic File Persistence: Built file serialization allowing users to restore files from specific historical commits.

Key Results

  • Implemented core Git commands, O(n) branching, and persistent historical state restoration in Java.
  • View-only source code available upon email request.