thecodingidiot.com

Version ControlPerfect Dark

Perfect Dark

You have a working git workflow. Now use it to read someone else's history — one built over five years, commit by commit, without the original source.

Clone the Perfect Dark decompilation repository:

git clone https://gitlab.com/ryandwyer/perfect-dark.git
cd perfect-dark

This repository is hosted on GitLab, not GitHub. The clone command is identical — git is the tool, and it works the same way regardless of which platform hosts the remote. It is large. Let it run.


Reading the log

git log --oneline --graph --all

The output scrolls. 6,779 commits. One contributor responsible for nearly all of them. The work began in September 2019 and the final commit landed on March 15, 2025.


Find all commits by the primary contributor:

git log --oneline --author="Ryan Dwyer"

Read the history of a single file — every commit that touched it. Perfect Dark's Simulants were technically ahead of their time for the N64; the bot AI is a good place to look:

git log --oneline -- src/game/bot.c

Inspect one commit in full — the diff it introduced, the author, the timestamp, the message:

git show <hash>

Focus on the first year of work:

git log --oneline --since="2019-09-01" --until="2020-09-01"

Each commit documents a decision made in real time — a function name chosen, a loop reconstructed, a match confirmed — by someone who had never seen the original source.


Blame

git blame shows which commit last modified each line of a file and who made that change:

git blame src/game/bot.c | head -40

In a decompilation, blame shows where each reconstructed line came from — and in this repository, almost every line traces back to one person working across five years.


Microsoft has never released this source. The repository has it anyway — commit by commit, across five years of work by someone who never had access to the original.

That is what version control is for. Not just keeping your own work safe, but making sustained, verifiable progress possible on any problem, however long it takes.

The tool you set up in this chapter is the same one he used.

up next

Digital Basics

Digital Basics