Before Git

Git is sixty years younger than the problem it solves.

Scribal copying

Every hand-copied manuscript introduces errors.

Textual critics reconstruct a lost original by comparing surviving copies: the same operation as diffing branches to find a common ancestor.

A stemma: a dashed node marked "lost original" at the top, two inferred intermediate copies below it, and four surviving manuscripts at the bottom.

Carbon paper

A duplicate made at the moment of writing, not after.

The mechanical ancestor of a commit.

Redlining / Track Changes

Every insertion and deletion marked and attributed.

A diff format, authored by hand, decades before software formalised one.

RCS, SCCS

1970s–80s. Store a base version. Record each change as a delta. Tag it with an author and a timestamp.

No new idea. First time a computer did the bookkeeping.

Only the cost of solving the problem properly dropped.

What did not change

Every one of these records that a change happened, and who made it.

Not one decides whether the change was an improvement, or which variant reading the author intended.

The bookkeeping was automated. The adjudication was not.

Next week

There’s a formal record of changes now.

How does a machine actually compare two versions?

Sources

  • The Source Code Control System Marc J. Rochkind, IEEE Transactions on Software Engineering SE-1(4), 1975, 364–370. SCCS: the first system to record, automatically, who made each change, when, and why. dl.acm.org
  • RCS — A System for Version Control Walter F. Tichy, Software: Practice and Experience 15(7), 1985, 637–654. Stores each revision as a delta against its neighbour: the carbon-paper idea, costed out in disk blocks. free PDF