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

时间:2010-07-16 11:23:09

标签: linux git linux-kernel kernel

我认为很多开发人员喜欢在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天不必要地复杂化   它的基础设施。

     

让它撕裂!

我已经查看了很多准备好的历史存储库但是我没有找到包含更改的版本返回到零版本,所以我放弃了并且在这里问这个问题。

4 个答案:

答案 0 :(得分:50)

这是我的设置。

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

以下移植物(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,这似乎正是您想要的。

答案 1 :(得分:9)

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

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

MAINBRANCH="master"    
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD)

# update current feature branch with master
git pull origin $MAINBRANCH

# delete existing backup
git branch -D "$CURRENT_BRANCH-backup"

# backup current feature branch and go back
git checkout -b "$CURRENT_BRANCH-backup" && git checkout -

# checkout and update master branch
git checkout $MAINBRANCH && git pull

# create new branch from master
git checkout -b "$CURRENT_BRANCH-squashed"

# set it to track the corresponding feature branch
git branch "$CURRENT_BRANCH-squashed" --set-upstream-to "$CURRENT_BRANCH"

# merge and squash the feature branch into the one created
git merge --squash $CURRENT_BRANCH

# commit the squashed changes
git commit

# force push to the corresponding feature branch
git push -f . HEAD:$CURRENT_BRANCH

# checkout the feature branch
git checkout $CURRENT_BRANCH

# delete the squashed copy
git branch -D "$CURRENT_BRANCH-squashed"

答案 2 :(得分:8)

这里是对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.110快照中的最新文件的日期为2.1.111,但是Wed May 20 11:00:00 1998 -06002.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)重建的历史树木以及莱纳斯的主线树。

  • 涵盖全部历史记录
  • 仅提供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 :(得分:5)

我发现的最好的是git://git.kernel.org/pub/scm/linux/kernel/git/davej/history.git。跟踪的历史记录从Linux-0.01开始,但很多评论都不像“Import 2.1.38pre1”。

无论如何,有很多知识。

感谢您的帮助!