Skip to content
Michael Ellerman edited this page Apr 10, 2024 · 11 revisions

Linux Full History

What is this?

It's a git tree containing the full history the Linux Kernel.

It was originally created by Yoann Padioleau, based on historical trees reconstructed by Dave Jones and Thomas Gleixner, and Linus' mainline tree.

It was then mirrored by Rob Landley who also updated it and hosted it when Yoann's site went away.

I then converted it to use replace objects instead of grafts, and recreated some of the tags because the originals were too old for github to recognise them.

How to use it

On Github

Github doesn't seem to actually use the grafts in the web interface. So you can't search for commits prior to the grafts for example.

You can still use tags: https://github.com/mpe/linux-fullhistory/tags/

And see the tree for a tag: https://github.com/mpe/linux-fullhistory/tree/v1.0.0

Or a file at a given tag: https://github.com/mpe/linux-fullhistory/blob/v0.0.1/kernel/fork.c

Or the history for a file starting from a tag: https://github.com/mpe/linux-fullhistory/commits/v1.0.0/kernel/fork.c

To clone

$ git clone https://github.com/mpe/linux-fullhistory.git
$ cd linux-fullhistory
$ git fetch origin 'refs/replace/*:refs/replace/*'
From https://github.com/mpe/linux-fullhistory
 * [new ref] refs/replace/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 -> refs/replace/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
 * [new ref] refs/replace/26245c315da55330cb25dbfdd80be62db41dedb2 -> refs/replace/26245c315da55330cb25dbfdd80be62db41dedb2

You can now run git log, and other operations, and they will traverse the full history:

$ git log --format=oneline Makefile | tail -5
6d68f3b69bc3c8d17ed2d272f4355d78937fb3e5 [PATCH] Linux-0.95 (March 8, 1992)
9d4ad8b823e99329530f2e0483211ac06c130e2b Linux-0.12 (January 15, 1992)
9df5e9fac79abbd846d6cdc1e5ee674fb2fb184d Linux-0.11 (December 8, 1991)
15739c07d39813f00f7660de5617ce0ca177869d Linux 0.10 (November 11, 1991 ???)
cff5a6fb66765e90470f4d9ca2398da0ca3c75d5 Linux-0.01 (September 17, 1991)

Or for a file/directory that no longer exists in HEAD:

$ git log --format=oneline -- arch/ppc | tail -5
3005edc968e36ef8444ac168a045cc2518e4fc34 Import 1.3.54
7abbfa00a96e5a7fa1e700ec448b605e59ee7d38 Import 1.3.53
d2ba8f583fbbfefb9a8fc2a8271e7b5ab25084cd Import 1.3.50
2c21eae793ce350998d011534bdecbe522ad7c17 Import 1.3.46
238327caacec57ec3c9e6a1db02370f3deec0c93 Import 1.3.45

Some notable commits through history

Clone this wiki locally