Delivery & Operations
Why Git history is part of the client handoff
Giving a client source code is good. Giving them a repository is better. Giving them a repository with a meaningful history is better still. A website is not only its current files. It is the sequence of decisions that produced those files.
The final snapshot cannot answer every maintenance question
Suppose a future developer opens the project and finds a strange-looking rule in the CSS. Maybe a reveal animation is disabled on touch-first devices. Without history, the rule can look unnecessary. With history, the developer may discover that the rule was added after a mobile browser produced compositing glitches while its chrome resized.
That context can prevent a well-intentioned cleanup from reintroducing the bug. This is why history has operational value.
The repository connects code and content changes
Because many of our sites keep MDX content in the same repository, the commit history can answer questions across both layers. A developer can inspect when a route changed. A marketer can inspect when an article or service page changed. An SEO review can compare ranking movement against actual source modifications instead of relying on memory.
A designer can see when a responsive behavior changed and what else moved in the same release. That shared history is more useful than maintaining separate undocumented timelines for code and content.
We use the history in the application itself
Some of our sites generate sitemap modification dates from Git history. That is a concrete example of the repository being more than storage. The build asks Git when a source file last changed and uses that information to produce a more honest lastmod value.
The release history becomes infrastructure.
Branches give unfinished work a place to exist
A staging branch lets a substantial feature develop without making production the scratchpad. The docs system you are reading followed that same pattern. A feature branch can contain route changes, content files, styles, metadata logic, and sitemap updates as one coherent unit. It can be previewed and audited before merge.
That creates a clean boundary between "work we are evaluating" and "work we have decided to publish."
Commits make large changes reviewable
A good commit does not have to be microscopic. It does need to describe a meaningful change. When the history says "add documentation infrastructure," "add deeper performance docs," or "wire documentation into sitemap generation," a future developer can understand the sequence without reading every diff first.
That helps during debugging and handoff.
Ownership includes the ability to leave
We do not like architectures that make the client technically dependent on the original vendor just to keep the site alive. A repository helps solve that. Another competent developer can clone the project, inspect the package manifest, read the routes, find the content directories, review the history, configure the environment, and deploy the code.
There may still be third-party accounts to transfer. Domains, analytics, form providers, email systems, and APIs have their own ownership requirements. But the website itself should not be a black box.
A repository is stronger than a visual export
Some website platforms can export HTML or a static snapshot. That may preserve the appearance. It does not necessarily preserve the system. A real repository contains the route architecture, reusable components, content loaders, schema logic, build scripts, SEO validation, image handling, form behavior, and deployment configuration.
That is what makes future changes practical.
Why this changes how we write code
If we know the project may eventually be handed to another team, that affects implementation quality. Opaque hacks become less attractive. Magic paths become less attractive. Undocumented one-off behavior becomes less attractive. Clear file structure, predictable naming, content models, shared metadata helpers, and narrow component boundaries become more valuable.
Handoff pressure improves the architecture.
The history is not a substitute for documentation
A future developer should not have to perform archaeology for every basic fact. Important environment variables, external services, build behavior, and deployment assumptions should still be documented. Git history answers a different class of question: how did the current system get here?
Why we care so much about this
Vendor lock-in can be created intentionally, but it can also emerge from neglect. A site that only one person understands is a form of lock-in even if the contract says the client owns the source. We want the technical reality to match the ownership promise.
The repository, its history, and its deployable structure are part of that promise.
From explanation to proof
Where this connects to the work
This category documents the work that keeps a custom site maintainable after launch and makes handoff possible without technical hostage-taking.