具有完整历史的 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.git
和davej/history.git
粘合在一起。
缺少一些旧版本,旧版本具有发布粒度而不是补丁粒度,但这是我所知道的最好的设置。
编辑: Dave Jones 将我指向http://www.archive.org/details/git-history-of-linux,这似乎正是您想要的。
【讨论】:
请注意,由于几个月前 kernel.org 遭到破坏,所有存储库都已从 git.kernel.org 中删除。torvalds/linux.git
、stable/linux-stable.git
和 tglx/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
上提供。
11:00:00 199X -0600
)。
某些日期似乎不正确。例如,2.1.110
和 2.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 存储库的主要内容,如果未能解决你的问题,请参考以下文章