.git objects 为什么要取前两个 字母作为文件夹再添加?

2021-09-03 19:02:41 +08:00
 liuidetmks

例如文件 sha 值为

aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

保存的时候保存路径是

.git/object/aa/f4c61ddcc5e8a2dabede0f3b482cd9aea9434d

为什么要这么做呢?
猜测是为了 object 防止文件夹下面文件过多?这样文件系统找文件是不是会更快?
还是为了美观?

我们平时写程序,创建文件时候较多( <1000),有必要这么操作的必要吗?

1343 次点击
所在节点    git
4 条回复
4ark
2021-09-03 19:05:51 +08:00
你猜测是对的
agagega
2021-09-03 19:07:29 +08:00
noe132
2021-09-03 21:01:22 +08:00
文件系统内部实现可能是链表也可能是 b 树。数量少,查询就快。
msg7086
2021-09-04 13:10:35 +08:00
才几千文件问题不大,可做可不做。如果是几十万几百万,那肯定是分开存放速度更快。

当然了,如果你用 Reiser 文件系统的话,倒是不一定要这么做,Reiser 家族处理大量文件性能挺好的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/799743

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX