答案1
是的,第一种方法效率很低,这就是为什么第二种方法被创造出来的原因。当使用旧的“愚蠢”传输方法时,git 无法从服务器请求特定的对象,它只能找出哪个包文件包含它需要的对象并下载全部的打包文件。
较旧的“哑”传输也从未真正用于将更改推送到服务器。虽然可以实现,但没人使用它,而且每个人都知道它很糟糕,因此它从未引起开发人员的太多关注。
另外如果你重新审视git-http-backend 手册页您链接的,您会注意到它不使用 DAV。这些示例创建了一个向后兼容的设置,以便较旧的 git 客户端仍具有读取权限,但只有较新的客户端才具有写入权限。我不知道是否可以设置它以便将 git-http-backend 和 DAV 一起使用,以便新旧客户端都可以具有写入权限,但我甚至不建议尝试它。
现实情况是,旧的“愚蠢”方法应该逐渐消失,并尽可能用“智能”方法取而代之。
为了更好地解释“愚蠢”和“智能”传输方法之间的区别,请阅读 ProGit 书籍作者撰写的这个精彩页面(带有图片!)。