【问题标题】:What does git update-server-info do?git update-server-info 有什么作用?
【发布时间】:2022-03-27 06:46:00
【问题描述】:

git update-server-info 是做什么的?我怎么知道我是否需要它?手册说:

不执行即时包生成的哑服务器必须在 $GIT_DIR/info 和 $GIT_OBJECT_DIRECTORY/info 目录中有一些辅助信息文件,以帮助客户端发现服务器有哪些引用和包。该命令生成这样的辅助文件。

我怎么知道我的服务器是不是哑巴,它是否做“on-the-fly pack generation”,是否“必须有一些辅助信息文件”?

我正在通过 ssh 将 Web 应用程序推送到裸存储库,然后从该裸存储库拉入 Web 根目录。

【问题讨论】:

标签: git ssh


【解决方案1】:

哑服务器基本上意味着通过 HTTP 访问。因此,如果您通过http:https: URL 访问您的Git 存储库,您需要update-server-info 业务,否则(git:ssh: 等)您不需要它。

【讨论】:

  • 但是每次推送到 repo 后你是否必须执行 git update-server-info ?或者只是一次,它总是会随着 repo 的变化而更新服务器信息。编辑:我试过了,似乎前者是真的。
  • Dmitri:你说得对,每次推送都必须这样做。但是您可以使用钩子来执行此操作;事实上,示例更新后挂钩中包含正确的命令:mv hooks/post-update.sample hooks/post-update 为我做了(确保它也是可执行的)
  • 还有人被这个看傻了吗?当你做显而易见的事情时,共享一个裸仓库不起作用,这有点令人惊讶。更糟糕的是,它看起来可以正常工作,但后来却无法正常工作。
  • @LukeMaurer,你在开玩笑吗? :) 网络上仅次于色情的第二大流量类型是谷歌搜索这样的 git 可用性变态。 (也许甚至不奇怪,但使用 git 实际上比色情更糟糕,这至少是所见即所得的,还有 KISS 之类的......;-o)
【解决方案2】:

但是每次推送到 repo 后你必须执行git update-server-info 吗?

git repack 也可以使用 git update-server-info,更新通过 HTTP 或 FTP 发布此存储库(或它的直接副本)所需的本地目录文件。

在 Git 2.36(2022 年第二季度)中,“git repack(man) 学习了一种新配置以禁用触发古老的 update-server-info 命令,这在当今(2022 年)很少有用。

参见Patrick Steinhardt (pks-t)commit a2565c4commit 64a6151(2022 年 3 月 14 日)。
(由 Junio C Hamano -- gitster -- 合并到 commit bfce3e7,2022 年 3 月 23 日)

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

签字人:Patrick Steinhardt

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

添加一个新选项“repack.updateServerInfo”,可用于禁用逻辑。
大多数托管服务提供商已经关闭了愚蠢的 HTTP 协议,在客户端它通常也没有用处。
因此,提供一种永久禁用此功能的方法对于避免浪费计算周期和存储非常有意义。

git config 现在包含在其man page 中:

repack.updateServerInfo

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

默认为真。可以被覆盖 当git repack-n 选项为真时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2013-10-21
    • 2021-01-02
    • 2018-04-22
    相关资源
    最近更新 更多