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.
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