如何摆脱警告"在此系统上禁用未跟踪缓存。"

时间:2017-05-26 15:43:33

标签: git

运行Card list时,我经常收到多个警告:

git status

我已将此添加到我的.gitconfig:

$ git status
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.
warning: Untracked cache is disabled on this system.

甚至尝试过[core] untrackedCache = true 。然而,这没有任何帮助。

在Ubuntu Xenial上使用git v2.7.4。

导致这些警告的原因是什么?我如何摆脱它们(没有管道错误到git update-index --untracked-cache)?

2 个答案:

答案 0 :(得分:4)

(VonC的问题是一个关键线索:未跟踪的缓存要求工作树路径与索引中存储的路径匹配。此外,系统名称来自uname的{​​{1}}字段那里也必须匹配;这会影响通过网络文件系统(如NFS或SMB)管理的文件。)

由于系统上禁用了未跟踪的缓存并导致出现警告,因此您可能不希望尝试 en 。换句话说,请将utsname设置为未设置,或将其设置为core.untrackedCache。但是,false是Git版本2.8.0中的新设置;如果你的Git是2.7.4你就没有它。

运行core.untrackedCache强制启用该设置(然后生成所有这些错误消息)。您可以使用git update-index --untracked-cache强制关闭它。唯一不好的结果是,当禁用未跟踪的缓存时,git update-index --no-untracked-cache可能会运行得更慢(可能显着更慢)。

请注意,从2.8.0开始,Git建议在启用未跟踪的缓存(使用git statusgit update-index --test-untracked-cache)之前运行--untracked-cache。另请注意,如果此core.untrackedCache = true设置设置为coretrue,则false设置只需将复制到索引时索引已更新(使用core.untrackedCache)。它实际上是控制事物的索引设置。使用默认值(未设置)或将其设置为git update-index会告诉Git单独保留未跟踪缓存设置。

您还可以将环境变量keep(设置为任意值)设置为禁用未跟踪缓存的使用,而不管索引中的当前设置如何。 (此代码似乎也在2.7.4中。)无论索引中的设置如何,这都将绕过警告,而不使用未跟踪的缓存。

答案 1 :(得分:0)

  

如何摆脱它们

注意:至少使用Git 2.17(2018年第二季度),您应该会看到更少的消息 当唯一改变的东西写出来时写出索引文件 是未跟踪的缓存信息往往是浪费,这有 已经过优化。

commit fc9ecbeBen Peart (benpeart)(2018年2月5日) (由Junio C Hamano -- gitster --合并于commit cdda65a,2018年3月8日)

  

dir.c:不要将索引标记为脏,以便更改未跟踪的缓存

     

未跟踪的缓存将其当前状态保存在UNTR索引扩展中。   目前,任何更改为该状态会导致索引被标记为脏   并写到磁盘   不幸的是,写出索引的成本可能会超过使用未跟踪缓存所节省的成本   由于它是一个可以从工作目录的当前状态更新的缓存,因此没有功能要求在每个对未跟踪缓存的更改时写出索引。

     

更新未跟踪的缓存逻辑,以便它不再强制索引   写入磁盘除了打开扩展名的情况或   关闭。
  当其他一些git命令要求将索引写入磁盘时,   未跟踪的缓存将利用它来保存它的更新状态。

     

当查看git命令的常见序列(例如状态后跟add,commit等)时,这会带来性能提升。