a version-control system that mimics some of the basic features of the popular system Git

design document and code cannot be publicly shared per course guideline, though they are available upon request.

My implementation of Git used file persistence, cryptographic hashing (SHA-1), graph traversals, regex, and data structures such as trees and queues. I designed this project with several core software engineering principles in mind, emphasizing efficiency, decomposition, and clean style.

Gitlet was my first project where I designed the entire project from the ground up. No boilerplate code, no design constraints. I drafted my own design documentation, detailing the exact behaviors of every functions used in Git. I learnt to think ten steps ahead while designing a particular data structure. Only 10% of the project involves coding, while 90% of the project required a lot of thinking and design iterations until I make all the pieces fit together. Like writing a novel, I will have to know exactly what I want to write, understand all the nuance interactions between characters in the plot, before I put my pen on the page.