NFS 上的存储库是否允许 git 到 运行 关闭每个文件系统上的本地磁盘?

Does a repository on NFS allow git to run off local disks on each file system?

A local repository is fast only if you have fast access to the data. A repository on NFS is often slower than the repository over SSH on the same server, allowing Git to run off local disks on each system.

Scott Chacon 和 Ben Straub,Pro Git(纽约:Apress,2014 年),第 1 章。 4、https://git-scm.com/book/en/v2.

在上面引文的第二句中,是什么让 Git 能够“运行 关闭每个系统上的本地磁盘”?也就是说,-ing分词从句的隐含主语是什么?是“NFS 上的存储库”吗?

In other words, what is the implicit subject of the -ing participle clause?

(注意:这更像是一个英语用法问题。)我想说引用的文字在语法上有点草率:你问的主题实际上是“Git's分布式性质”,它在引用的文本中无处出现。

Git 存储库的分布式特性意味着您可以克隆 一个存储库,从一些存储库中复制所有提交1存储库的服务器版本。一旦您在本地完成了整组提交,您就可以在本地以本地机器的速度处理这些提交。事实上,本地驱动器(现在通常是 SSD)可能非常快,这有助于解决问题。

在 1980 年代,当 NFS 被发明时,我们的磁盘驱动器很慢(20 毫秒的访问时间被认为是 快速⟩)。我们有 SASI 和早期的 SCSI 驱动器,容量可能为 100 到 300 MB,转速为 3600 RPM 或更慢。同时,像 Sun 3/50 这样的台式计算机最多有 4 字节的 RAM(不是 4 千兆字节,只有 4 MiB) .在以太网为 10 Mbit/s 的情况下,与从旋转媒体读取文件相比,通过以太网线读取文件并不慢,而且大型服务器可能有 32 MiB 的 RAM 用于缓存文件数据,并且可以使用多个 600+ MB 的巨大内存驱动器(例如 Fuji SuperEagle 或更大)。结果,许多 3/50 变成了“无盘”。

当然,计算世界是一个无穷无尽的概念回收轮:“云存储”现在是一件大事。规模扩大——存储几 PB?没什么大不了的!现在,如果您想要一打 exabytes,那么您就是在谈论真金白银 — 但想法会反复出现。


1请注意,克隆不会复制分支名称。不过没关系,因为分支名称无关紧要:只有 commits 重要。克隆过程获取服务器的 branch 名称并将它们转换为 remote-tracking 名称—Git 调用这些 remote-tracking 分支名称,但我发现这里的 branch 这个词有负值——所以你可以通过服务器的分支名称找到提交,使用,例如,origin/feature/tall 而不是分支名称 feature/tall.

(您自己的 Git 软件然后使用这些 remote-tracking 名称能够根据需要创建 您的 分支名称。)