具有完整历史的 Linux 内核“历史”git 存储库

Posted

技术标签:

【中文标题】具有完整历史的 Linux 内核“历史”git 存储库【英文标题】:Linux kernel "historical" git repository with full history 【发布时间】:2011-03-16 21:50:51 【问题描述】:

我认为许多开发人员喜欢在git gui blame 的帮助下调查资源。正如commit for Linux-2.6.12-rc2(也称为mirrored at Github)中所解释的,它需要为此目的具有特殊的历史Linux 存储库。

Linux-2.6.12-rc2

初始 git 存储库构建。我不在乎完整的历史, 即使我们拥有它。我们可以创建一个单独的“历史”git 如果我们愿意,可以稍后存档,同时它是关于 导入 git 时为 3.2GB — 早期的空间 git 天不必要地复杂,当我们没有很多好的时候 基础设施。

让它撕裂!

我查看了很多准备好的历史存储库,但我没有找到包含可以追溯到版本零的更改,所以我放弃了,在这里问这个问题。

【问题讨论】:

【参考方案1】:

这是我的设置。

我有一个包含以下遥控器克隆的存储库:

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git https://git.kernel.org/pub/scm/linux/kernel/git/davej/history.git

还有以下移植(info/grafts):

1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 e7e173af42dbf37b1d946f9ee00219cb3b2bea6a
7a2deb32924142696b8174cdf9b38cd72a11fc96 379a6be1eedb84ae0d476afbc4b4070383681178

通过这些移植,我对自 0.01 以来的内核历史有了完整的了解。第一次移植将 Linus 存储库中的第一个版本与 tglx/history.git 的相应版本粘合在一起。第二个移植物将tglx/history.gitdavej/history.git 粘合在一起。

缺少一些旧版本,旧版本具有发布粒度而不是补丁粒度,但这是我所知道的最好的设置。


编辑: Dave Jones 将我指向http://www.archive.org/details/git-history-of-linux,这似乎正是您想要的。

【讨论】:

请注意,由于几个月前 kernel.org 遭到破坏,所有存储库都已从 git.kernel.org 中删除。 torvalds/linux.gitstable/linux-stable.gittglx/history.git 已经回来了; davej/history.git 仍然不见了。 我将davej/history.git 存储库的副本上传到repo.or.cz/w/davej-history.git 感谢镜子!我在 github github.com/schwabe/davej-history 和 github.com/schwabe/tglx-history 上做了额外的镜像以防万一【参考方案2】:

这里是对 2018 年可用选项的回顾,重点是标签可用性和日期正确性。

https://archive.org/download/git-history-of-linux/full-history-linux.git.tar

由 Dave Jones 开发,并在 archive.org 上提供。

涵盖 2010 年之前的早期版本。 244,464 次提交 只有 184 个标签,涵盖 2.6 中的版本。标签that should have been created for all versions 似乎不见了。 早期提交具有实际日期,但时间不正确 (11:00:00 199X -0600)。 某些日期似乎不正确。例如,2.1.1102.1.111 的日期均为 Wed May 20 11:00:00 1998 -0600,尽管2.1.111 快照中的最新文件的日期为 1998-07-25 09:17。 创建过程是documented on GitHub,看起来很彻底。

https://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git/

由 Thomas Gleixner 创建。

涵盖 2.4.0 到 2.6.12-rc2。 包含 170 个标签,涵盖 2.5.X 和 2.6.X。 63,428 次提交 日期正确。 包含转换为提交的补丁。

https://github.com/mpe/linux-fullhistory

由 Michael Ellerman 创建,源自 Yoann Padioleau 的作品,基于 Dave Jones 和 Thomas Gleixner 重建的历史树以及 Linus 的主线树。

涵盖全部历史 仅提供 558 个标签,大部分从 2.0.0 开始。 790,471 次提交 与 Dave Jones 的存储库中的日期问题相同。 使用替换对象而不是移植对象。

https://git.kernel.org/pub/scm/linux/kernel/git/history/history.git/

归 Linux历史团队所有。

涵盖 2.6.33-rc5 的早期版本。 1710 个标签,从 0.10 开始,涵盖大部分早期版本。 244,774 次提交 大多数历史版本的日期不正确Fri Nov 23 15:09:04 2007 -0500

https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/

现代 Linux 开发。

涵盖 2.6.12-rc2 (2005) 直到今天 569 个标签 777,419 次提交(2018 年 8 月) 正确提交

【讨论】:

【参考方案3】:

引用的存储库不再存在。新的在这里: https://git.kernel.org/cgit/linux/kernel/git/history/history.git/

如果你像我一样想要保留一些 repos sep,你可以利用替代品和移植物来做到这一点:

# Same dir as main linux
$ git clone --bare git://git.kernel.org/pub/scm/linux/kernel/git/history/history.git
$ cd linux/.git/
$ echo ../../../history.git/objects >> objects/info/alternates
$ echo 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 e7e173af42dbf37b1d946f9ee00219cb3b2bea6a >> info/grafts
$ echo 7a2deb32924142696b8174cdf9b38cd72a11fc96 379a6be1eedb84ae0d476afbc4b4070383681178 >> info/grafts

【讨论】:

【参考方案4】:

我发现最好的是git://git.kernel.org/pub/scm/linux/kernel/git/davej/history.git。那里的历史跟踪从 Linux-0.01 开始,但许多 cmets 很差,比如“导入 2.1.38pre1”。

反正知识很多。

感谢您的帮助!

【讨论】:

以上是关于具有完整历史的 Linux 内核“历史”git 存储库的主要内容,如果未能解决你的问题,请参考以下文章

GIT01_历史概述GIT和SVN对比常用托管服务

Git历史安装执行流程及在idea中的使用等

在提交历史记录中查找Linux内核快照

Linux的发展历史历程是怎样的

sh 带有颜色的完整git存储库历史记录

SVN Mirror 标记的分支历史保存