【发布时间】:2014-07-09 14:18:13
【问题描述】:
简短说明
我想以高效的方式检测本地 git 存储库中的本地更改。这意味着检测哪些文件在本地被修改,以及未版本化的文件。必须提取任何未提交的更改/文件添加。
我的尝试
到目前为止我得到了什么(要点):https://gist.github.com/kevin-smets/02bda148a5330f350e6b
这是一个可以独立运行或作为 git 插件运行的脚本。它所做的基本上如下,每两秒启动一个git status --porcelain,解释它以检查哪些文件被更改。但是,当它运行时,它会持续占用大约 8% 的 CPU。我尝试了git --diff-files 和其他各种命令,但都导致 CPU 使用率很高。 :(
为什么?
我想将此文件列表提供给 grunt watch 进程。目前我的代码库大约有 15k 个文件并且还在增长。观看所有这些文件将变得不可能。我已经应用了一个静态过滤器来限制观看的文件数量,但是每次我想在定义的过滤器之外编辑文件时手动更改它会变得很麻烦。
一个想法
我的一个想法是,IntelliJ / WebStorm(我当前的 IDE)如何监控 GIT 存储库?我尝试进入社区版的源代码,但是,我想不出来:)。 WebStorm 一定有某种方法可以做到这一点,而不会对 CPU 造成负担,它似乎会在 1 秒或更短的超时时间内获取这些更改......即使它们是在 IDE 之外进行的。我想知道 GIT 中是否有一些事件系统,但我找不到任何类似的东西。
感谢阅读
任何帮助,我们都非常感谢!
【问题讨论】:
-
搜索文件系统挂钩。这允许您设置在文件系统发生更改时执行的操作(在这种情况下是您的 git 命令)
-
你有没有想过使用github.com/rvoicilas/inotify-tools/wiki之类的东西来监控文件的变化,然后每次检测到变化时,你只需检查
git以查看文件是否被跟踪?跨度>
标签: git gruntjs grunt-contrib-watch