Sixteen weeksscene 9 / 34~2 min

Parallel worlds

Week three. Two engineers, one file.

Wednesday of week three. The cheer feature is nearly ready to come home, so Finn goes to bring the rest of the team’s week into it first, a routine bit of housekeeping that has gone smoothly a hundred times, and the machine says: not so fast.

Rewind. All this time, Finn has not been working in the shared copy at all. On day one of the feature, Finn split off a Concept · lights on your mapbranchA parallel line of history split from the main one, where an engineer works in isolation and commits freely while main stays clean and shippable. Cheap and disposable; one per feature is the norm.: a parallel timeline of the codebase, private and safe to be wrong in, while the main timeline stays clean enough to ship at any hour. Everyone on the team has one going. The repository is quietly a stack of parallel worlds.

Traffic between worlds

Sharing work is two verbs. Concept · lights on your mappushUploading your commits to the shared repository. Upload, wearing Git’s uniform; its opposite is pull. sends your commits up to the shared copy; Concept · lights on your mappullDownloading others’ commits into your own copy. Download, in the same uniform; its opposite is push. brings everyone else’s down. Upload and download, wearing Git’s uniform. Finn pushes at the end of most days, pulls at the start of all of them, and the ritual is so automatic it has stopped being a decision.

The fold, and the argument

Folding one timeline into another is a Concept · lights on your mapmergeCombining one branch’s commits into another: the feature timeline folding back into main. Automatic when changes do not overlap; a human decides when they do., and most merges are boring. Git lines up both timelines, sees that they touched different files, and knits. This one is not boring. A teammate, wiring cheer notifications into the same delivery file, changed one of the same lines Finn changed, and that work is already home in main. Git does the only honest thing a tool can do with two versions of the truth. It stops and asks.

That stop is a Concept · lights on your mapmerge conflictWhen two branches changed the same lines differently, the tool cannot choose, and a person looks at both versions and decides what the combined truth should be. Routine at small scale, and the reason long-lived branches are feared., and the resolution is gloriously low-tech: Finn and the teammate stand at one desk, read both versions, and decide what the combined truth should be. Four minutes, start to finish. The dread is worse than the thing, so long as branches stay short-lived, which is exactly why Traversal keeps them to days.

Resolved. The branch is ready to come home, and coming home has a form.

End of scene

This scene covers: branch, push, pull, merge, merge conflict

Versions and the commons