GIT:我怎样才能以高效的方式观察本地的变化?

GIT:我怎样才能以高效的方式观察本地的变化?,git,gruntjs,grunt-contrib-watch,Git,Gruntjs,Grunt Contrib Watch,简短描述 我想以一种高效的方式检测本地git存储库中的本地更改。这意味着检测哪些文件在本地被修改,但也检测未版本的文件。任何未经限制的更改/文件添加都必须进行 我的尝试 到目前为止我得到了什么(要点): 这是一个可以独立运行或作为git插件运行的脚本。它基本上是这样做的,每两秒钟启动一个git status--cillar,解释它以检查哪些文件被更改。然而,当它运行时,它需要大约8%的CPU。我尝试了git--diff文件和其他各种命令,但都导致了高CPU使用率:( 为什么? 我想将此文件列表提

简短描述

我想以一种高效的方式检测本地git存储库中的本地更改。这意味着检测哪些文件在本地被修改,但也检测未版本的文件。任何未经限制的更改/文件添加都必须进行

我的尝试

到目前为止我得到了什么(要点):

这是一个可以独立运行或作为git插件运行的脚本。它基本上是这样做的,每两秒钟启动一个
git status--cillar
,解释它以检查哪些文件被更改。然而,当它运行时,它需要大约8%的CPU。我尝试了
git--diff文件
和其他各种命令,但都导致了高CPU使用率:(

为什么?

我想将此文件列表提供给grunt watch进程。目前,我的代码库大约有15k个文件,而且还在不断增长。监视所有这些文件将变得不可能。我已经应用了一个静态过滤器来限制监视的文件量,但每次我想在grunt之外编辑文件时,手动更改此列表会变得越来越麻烦定义的过滤器

一个想法

我的一个想法是,IntelliJ/WebStorm(我当前的IDE)是如何监控GIT存储库的?我试着查看社区版的源代码,但我想不出来:)。WebStorm一定有办法做到这一点而不会对CPU造成负担,它似乎会在一秒钟或更短的超时时间内收到这些更改。。。即使它们是在IDE之外制作的。我想知道GIT中是否有一些事件系统,但我找不到任何类似的东西

感谢您的阅读

任何帮助,我们都将不胜感激

我正在使用:

git status -s --porcelain
基准

time git status -s --porcelain
#...
real    0m0.078s
user    0m0.032s
sys 0m0.011s
简单:

time git status

#...
real    0m0.182s
user    0m0.075s
sys 0m0.089s
我最终还是用它来监视我的源文件夹。现在大约有20k个文件,只要我看一下文件夹本身,没有**/*.scss这样的glob,它就会像一个魔咒一样工作


我自己通过检查文件的extname并将其提供给正确的构建目标来对文件类型进行过滤。这样我就从进程中消除了git。当Chokidar通知您文件发生更改时,您仍然可以运行任何git命令,这样就消除了难看的任意超时,并且您的CPU不会经常被占用。

搜索关于文件系统挂钩的信息。这允许您设置在文件系统中发生更改时执行的操作(在本例中是您的git命令)。您是否想过使用类似的方法来监视文件的更改,然后每次检测到更改时,只需使用
git
检查文件是否被跟踪?嗯,这确实有所改进。从8%到5.4%。我想我需要研究文件系统挂钩。我想做一个通用的解决方案(非操作系统专用),所以只依赖GIT。然而,这似乎不可能。谢谢你的建议!