如何从HomeBrew中删除浅层克隆警告

luc*_*ang 6 git homebrew

?  ~ 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.
Run Code Online (Sandbox Code Playgroud)

我之前修改了git远程地址以反映自制程序的地址.也许它与此相关,但我不知道.

Gri*_*vit 130

自 2020 年 10 月起,Homebrew在安装时不再创建浅层克隆,并且自 2020 年 12 月起也不允许更新现有的浅层克隆。

(这使得关于使警告静音的原始问题没有实际意义)。


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

错误:
  homebrew- core是一个浅层克隆。
  homebrew- cask是一个浅层克隆。
要`brew update`,首先运行:
  git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew- core fetch --unshallow
  混帐-C在/ usr /本地/家酿/库/水龙头/自制软件/ homebrew-木桶取--unshallow

现在需要通过运行git错误消息中的命令来执行非浅层过程。

注意:在不提供反馈的情况下,此过程可能需要很长时间才能完成。


有关此更改动机的一些详细信息,请参阅Homebrew 的 GitHub 页面上的此讨论,特别是:

浅克隆有两个主要缺点:

  1. 它放在GitHub的服务器,有一个庞大的计算负担, 动态地 计算你所拥有的和最新的承诺,每间一个新的增量 brew update。(使用完整克隆,GitHub 可以简单地将上次拉取后发生的所有提交发送给您,其余的由您的本地 Git 客户端处理。)
  2. 由于 [1],这使得 GitHub 更有可能对 Homebrew 操作进行速率限制,这对每个人来说都会很糟糕。

--gromgit 2020 年 12 月 5 日,美国东部标准时间上午 12:29

并且此附加文本添加到错误消息中:

由于 Homebrew/homebrew-core 和 Homebrew/homebrew-cask 的树布局和流量,更新浅克隆是一项极其昂贵的操作,因此在 GitHub 的请求中已做出此限制。

  • @OliverDixon,再等一下,这是一个巨大的回购协议,我花了几分钟来执行这个。 (20认同)
  • 当你执行这个命令时它就会挂起:-/ (11认同)
  • 对于想要知道 git 是否仍在拉取更改的人,请添加“-v”(详细移动)以在长时间等待后显示进度。 (9认同)
  • 来到这里寻找答案:“注意:如果不提供反馈,此过程可能需要很长时间才能完成。” (6认同)
  • 感谢您提供所有详细信息。您能澄清一下浅克隆的问题到底是什么吗?因为只下载最新版本,所以不应该首选它们吗? (4认同)
  • @TheKarateKid 是的。如果您安装了旧版本(2020 年 12 月之前)的自制程序,它会让您更新到最新版本,但是当您尝试再次更新时,最新版本将提示您运行 git unshallow 命令,并将如果不更新则拒绝更新。 (4认同)
  • 我以为我的也挂了,只是花了很长时间才开始做某事。首先: `git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core" fetch --unshallow`,然后 `git -C "/usr/local/Homebrew/Library/Taps/homebrew/homebrew -cask" fetch --unshallow`。这一切都超出了我的范围。 (2认同)
  • 这是否意味着,如果我们不手动取消自制程序安装,即使运行“brew update”,我们也不会收到更新? (2认同)

Wei*_*ing 40

不知何故,unshallow 对我不起作用,我等了大约 10 分钟,但没有任何显示,即使有-v选项。

刚刚找到了一种可能有效的解决方案(至少对我有用)。

您可以删除存储库并再次克隆以获取最新的存储库。

cd /usr/local/Homebrew/Library/Taps/homebrew/
rm -rf homebrew-core
git clone https://github.com/Homebrew/homebrew-core.git
Run Code Online (Sandbox Code Playgroud)

如果您也需要更新,则适用于 homebrew-cask 的相同命令

所有学分都属于这个答案


Hed*_*dge 11

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

目前没有办法消除这个警告。它是在这个Github 问题中提出的,但后来被忽略了。

deleted_reason打印消息的函数包含一个silent参数,但无法使用silent来自 CLI 命令的类似内容,稍后调用deleted_reason.

  • IMO,这是更好的答案。我的要点是:如果您是开发人员,请获取浅层克隆,如 ryenus 的答案所示。如果您是用户,请留下它。 (3认同)

rye*_*nus 9

就像它说的那样

要获得完整的历史记录:

git -C "$(brew --repo homebrew/core)" fetch --unshallow
Run Code Online (Sandbox Code Playgroud)

这种方式brew info可以搜索仅在过去存在但在某些时候被删除的公式.

它可能在某些情况下有所帮助,但可能并不多.例如,错误可能是由您尝试查找的公式名称中的拼写错误引起的.在这些情况下,我只是忽略此错误,而不是获取所有历史记录提交.

  • “浅克隆”的最简单解释是它只是 git 存储库的克隆,没有修订历史,从而减少了 git 存储库的占用空间。您还可以指定“深度”以减少从 git clone 获得的修订历史的数量。从本质上讲,您可以获得最新版本的代码库而不会出现膨胀。 (3认同)
  • 我和OP有同样的问题。也许他们想知道我为什么需要这样做(直到最近我才看到这个警告),它的用途是什么,我每次做`brew info`时都需要这样做吗?这只是暂时的故障吗?我定期使用 git,但没有浅层克隆与深层克隆的经验。 (2认同)

Roh*_*wal 6

使用--unshallow标志获取 repo :

git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
Run Code Online (Sandbox Code Playgroud)

  • 通常需要多长时间?我不确定它是否正在运行。它只是停滞不前。 (3认同)

Nan*_*mar 6

我通过 git pull --unshallow 更新了 repo

更新自制核心

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
git pull --unshallow
Run Code Online (Sandbox Code Playgroud)

更新自制酒桶

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask
git pull --unshallow
Run Code Online (Sandbox Code Playgroud)