git update-server-info是做什么的?

43
git update-server-info命令是做什么用的?我如何知道我是否需要它?手册上说:
“一个不会进行即时打包生成的愚蠢服务器必须在$GIT_DIR/info和$GIT_OBJECT_DIRECTORY/info目录中有一些辅助信息文件,以帮助客户端发现服务器具有哪些引用和打包。这个命令生成这样的辅助文件。”
我如何知道我的服务器是否愚蠢、是否进行即时打包生成以及是否“必须有一些辅助信息文件”?
我通过ssh将Web应用程序推送到裸仓库,然后从该裸仓库拉取到Web根目录。

请参见https://dev59.com/4XM_5IYBdhLWcg3wgzZl - VonC
2个回答

44

“Dumb server”基本上意味着通过HTTP进行访问。因此,如果您通过http:https: URL访问Git存储库,则需要执行update-server-info操作,否则(如git:ssh:等)则不需要。


但是你是否需要在每次推送到仓库后执行git update-server-info?还是只需要执行一次,它将始终更新服务器信息,因为仓库发生了变化。编辑:我尝试了一下,似乎前者是正确的。 - Dmitri Shuralyov
5
Dmitri: 你说得对,每次推送都需要这样做。但是你可以使用一个钩子来完成这个操作;实际上,示例中的 post-update 钩子包含了正确的命令:mv hooks/post-update.sample hooks/post-update 对我有用(确保它是可执行的)。 - bjnord
5
有人对此感到惊讶吗?很令人惊讶的是,当你做显而易见的事情时,共享一个裸仓库并不起作用。更糟糕的是,它看起来像是能正常工作,但后来却被证明不能正常工作。 - Luke Maurer
3
@LukeMaurer,你在开玩笑吗? :) 除了色情之外,第二大互联网流量类型就是搜索类似于这样的git可用性曲解。 (也许并不令人惊讶,但使用git实际上比色情更糟糕,后者至少是WYSIWYG、KISS等等...... ;-o) - Sz.

1
你需要在每次推送到仓库后执行git update-server-info吗?git repack也可以使用git update-server-info,更新本地目录文件以便通过HTTP或FTP发布此存储库(或其直接副本)所需的信息。Git 2.36(2022年第二季度)学习了一个新的配置来禁用触发古老的update-server-info命令,这在现今很少有用(2022年)。git repackman 查看 提交a2565c4提交64a6151(2022年3月14日)由Patrick Steinhardt (pks-t)完成。
(已合并至提交bfce3e7,2022年3月23日,由Junio C Hamano -- gitster --执行)

repack:添加配置以跳过更新服务器信息

签名作者:Patrick Steinhardt

默认情况下,git-repack会更新由愚蠢的HTTP传输所需的服务器信息。
可以通过传递-n标志来跳过此步骤,但我们明显缺少一个配置选项来永久禁用更新此信息。

添加一个新选项"repack.updateServerInfo",可用于禁用该逻辑。
大多数托管提供商已经关闭了愚蠢的HTTP协议,在客户端方面,它通常也不会有用。
因此,给出一种持久禁用此功能的方法是非常有意义的,以避免浪费计算周期和存储空间。

git config 现在在其手册页面中包含:

repack.updateServerInfo

如果设置为 false,则 git repack 将不会运行 git update-server-info

默认为 true。当为 true 时,可以通过 git repack-n 选项覆盖。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接