Git 如何从自制软件中删除浅克隆警告

Git 如何从自制软件中删除浅克隆警告,git,homebrew,Git,Homebrew,我以前将git远程地址修改为homebrew的镜像地址。也许这与此相关,但我不知道。在封面下,Homebrew使用Git进行版本控制,并使用浅克隆 不包含所有历史修订/提交,以提高效率和数据量 实际上,在大多数情况下,可以安全地忽略警告,因为正在搜索的公式可能不可用 但如果你真的在寻找一些可能在过去存在的公式,就按照它的建议去做: 要运行完整的历史记录,请执行以下操作: ➜ ~ brew info test Error: No available formula with the name

我以前将git远程地址修改为homebrew的镜像地址。也许这与此相关,但我不知道。

在封面下,Homebrew使用Git进行版本控制,并使用浅克隆 不包含所有历史修订/提交,以提高效率和数据量

实际上,在大多数情况下,可以安全地忽略警告,因为正在搜索的公式可能不可用

但如果你真的在寻找一些可能在过去存在的公式,就按照它的建议去做:

要运行完整的历史记录,请执行以下操作:

➜  ~ brew info test 
Error: No available formula with the name "test" 
==> Searching for a previously deleted formula...
Warning: homebrew/core is shallow clone. To get complete history run:
  git -C "$(brew --repo homebrew/core)" fetch --unshallow

Error: No previously deleted formula found.

通过这种方式,Homebrew可以搜索仅在过去存在但在某些时候已删除的公式。

我建议不要取消克隆,因为它会占用磁盘空间,使查找速度变慢,并且只允许您安装过时或未维护的应用程序

目前没有办法使此警告静音。这是在本报告中提出的,但后来被忽略了

打印消息的函数
deleted\u reason
包含一个
silent
参数,但是如果要使用CLI命令中的
silent
之类的内容,则从2020年10月开始,在安装自制浅层克隆时,CLI命令将调用
deleted\u reason

,截至2020年12月,更新现有的浅层克隆是:

(这使得关于让警告静音的原始问题变得毫无意义)


如果配置了浅层克隆,将显示包含如下文本的消息:

错误: 自制核心是一个肤浅的克隆。 自制木桶是一个浅层的克隆。 要“brew更新”,请首先运行: git-C/usr/local/Homebrew/Library/Taps/Homebrew/Homebrew核心提取——不允许 git-C/usr/local/Homebrew/Library/Taps/Homebrew/Homebrew桶提取——不允许 现在需要通过运行错误消息中的
git
命令来执行取消允许进程

注意:如果不提供反馈,此过程可能需要很长时间才能完成


有关此更改动机的详细信息,请参见Homebrew的GitHub页面上的,具体如下:

浅层克隆有两个主要缺点:

  • 它给GitHub的服务器带来了巨大的计算负担,在每次
    brew更新
    时,这些服务器必须动态计算您拥有的内容与最新提交之间的新增量。(使用完整克隆,GitHub只需向您发送上次拉取后发生的所有提交,其余的由本地Git客户端负责。)
  • 由于[1],GitHub很可能会限制自制操作,这会让每个人都觉得很糟糕
  • --格罗姆吉特

    以及错误消息的附加文本:

    对GitHub的请求进行了此限制,因为 由于克隆的树布局和流量,克隆是一项极其昂贵的操作 自制/自制核心和自制/自制桶

    此命令应与
    sudo
    一起运行,并且可以正常工作

    git -C "$(brew --repo homebrew/core)" fetch --unshallow
    

    使用
    --unshall
    标志获取回购:

    sudo git -C "$(brew --repo homebrew/core)" fetch --unshallow
    

    我已经通过git pull更新了repo——unshall

    更新自制核心

    git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
    
    更新自制桶

    cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
    git pull --unshallow
    

    我和OP有同样的问题。也许他们和我一样想知道为什么我需要这样做(我直到最近才看到这个警告),它的作用是什么,每次我做
    brew info
    时我需要这样做吗。这只是暂时的小故障吗?我经常使用git,但没有浅层克隆和深层克隆的经验。我决定试试看:>$git-C“$(brew--repo homebrew/core)“fetch--unshall>错误:无法打开。git/fetch\u HEAD:权限被拒绝“浅层克隆”的最简单解释它只是git存储库的一个克隆,没有修订历史记录,因此减少了git repo的占用空间。您还可以指定“深度”以减少从git克隆获得的修订历史记录量。从本质上讲,你得到的是最新版本的代码库,而不是膨胀的代码库。从一个大型、旧的、活动的repo中提取一个深度克隆可能会占用大量的带宽和时间。历史版本已经过时,因此对于“典型”用法没有任何价值。因此,这是一个很好的brew浅克隆优化。警告很简单,因为它没有完整的历史记录,所以无法区分打字错误和删除。绝大多数情况下,这都是一个打字错误。这是一个更好的答案,依我看。我的建议是:如果你是一名开发人员,获取不允许的克隆,就像莱恩努斯的回答一样。如果你是一个用户,就不用管它了。请注意,自2020年12月起,自制软件不再允许浅层克隆@GrishaLevit这可能是新的公认答案@paulcm说得很好,补充了一个答案。谢谢所有的细节。你能澄清一下浅层克隆到底有什么问题吗?因为只下载了最新版本,所以它们不应该是首选的吗?但是,当您执行此命令时,它会挂起:-/@OliverDixon,再等等,这是一个巨大的回购,我花了几分钟来执行它。@TheKarateKid没错。如果您安装了旧版本(2020年12月之前)的homebrew,它将允许您更新到最新版本,但是,当您再次尝试更新时,最新版本将提示您运行git unshall命令,如果您不运行,将拒绝更新。来此查找答案:“注意:如果不提供反馈,此过程可能需要很长时间才能完成。”
    git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
    
    cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
    git pull --unshallow
    
    cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask
    git pull --unshallow