Hacker News new | ask | show | jobs
by thaliaarchi 809 days ago
This got me thinking about what the Linux kernel was using before BitKeeper (of course before Git). Did it not have version control? Was it just Torvald's tree, maintained by applying patches from the list, and distributed via archives or rsync? (Oh, and if anyone knows how to get a copy of the BK or pre-BK sources, let me know!)

A strange case I've run across from the SCCS and RCS era is Plan 9. The history of the Plan 9 kernel is stored as ed scripts[0], which produce revisions per file, essentially like ad hoc SCCS deltas. I'm not sure if it was assembled as such after the fact or recorded like that all along. That method seems to have only been used for the kernel and the rest (such as the libraries) was snapshotted daily on a file server starting in 2002.

[0]: https://9p.io/sources/extra/9hist/README (To look around, just pop off README.)

3 comments

Did Linux have version control? That would depend on your definition of version control. It did not have a canonical version control system, but it did have the data structure for it in the form of the linux-kernel mailing list. From that a series of patches could be extracted that mirrors development quite accurately.

All subsystem maintainers had their own way of working with this. Some used svn, some used bespoke scripts.

The main reason for creating bk and git was that none of the existing version control systems matched the workflow of sending patches via a mailing list. This is quite clearly reflected in the design of git, a tool for quickly wiping and recreating a whole project directory.

Linux development history was imported to git, and you can follow it back in time since long before the introduction of git, so in that sense some form of version control can be said to have existed.

The quilt tool by Andrew Morton is one of these tools used for maintainance (https://man7.org/linux/man-pages/man1/quilt.1.html) of the kernel. It's actually quite nice to use. Early versions of git and mercurial had tooling around similar workflows on top of git/hg repositoires (guilt, being one of these tools).

My understanding is that even during the BK years, some maintainers refused to use it and would continue to use tarballs + patches.

Torvalds' git repo only goes back to 2005; is there another one with more history? Because I wouldn't describe 2005 as "long before the introduction of git".
Yup, Linux was just patches and a sequence of tarballs.

Another weird one is a distributed version control system over UUCP [1]. Although not distributed in the modern sense

[1] O'Donovan, Brian, and Jane B. Grimson. "A distributed version control system for wide area networks." Software Engineering Journal 5.5 (1990): 255-262.

Early linux versions as a git repository are available here: https://archive.org/details/git-history-of-linux