【问题标题】:Git hook for unstaged changes/file changes用于未暂存更改/文件更改的 Git 挂钩
【发布时间】:2021-05-30 12:33:22
【问题描述】:

我正在寻找一个脚本来监视 git 跟踪的所有文件/文件夹,以通知我是否有任何更改。我正在寻找文件更改,不一定是分阶段更改。

我一直在梳理各种 SO 问题和文档,但我找不到任何相关示例来实现基于 git 的文件系统观察器,这将是有效的,因为我可能想在众多存储库和可能数百个文件都在一个系统上,而且效率极低。

git 甚至是正确的解决方案吗?即使在很多很多文件中使用fswatch 会更好吗?

非常感谢

【问题讨论】:

  • Git 本身不监视文件系统,因此在文件更改时也不提供任何挂钩。它只在执行 git 命令时检查文件系统。如果您需要主动收到有关更改的通知,则需要使用其他工具。许多 IDE 会像您描述的那样监视项目目录,所以也许这是一种可能的方法?你想达到什么目的,这可能是XY problem
  • @JoachimSauer 所以你的意思是在文件写入时没有检测到未暂存的更改,只有在执行另一个 git 命令时才检测到?
  • 是的,我就是这么说的。
  • @JoachimSauer 非常感谢!能否请您用您刚才所说的回答这个问题,以便我接受?

标签: git fswatch


【解决方案1】:

Git 本身不监视文件系统 (*),因此在文件更改时也不提供任何挂钩。它只在执行 git 命令时检查文件系统。

因此,没有(也不可能)任何在文件更改时执行的钩子。如果需要,您需要找到另一种方法来监视文件系统。

(*) 显然有一种方法可以真正实现use file system monitoring in git,但这似乎只用于加速git status(和其他操作),并不意味着git 会主动监控变化。它只是将“检查每个文件是否修改”替换为“检查自上次修改以来更改的文件列表”。

【讨论】:

  • Git 有一些文件系统监控的东西,还有些实验性。不过,他们可能对 OP 没有任何帮助。
  • @torek:如果您的意思是 core.fsmonitor 功能:我不知道这一点,并在我的回答中添加了提及。但从我读到的内容来看,这确实不能满足 OP 的要求。
  • 是的。 fsmonitor 的东西……我想说,还没有准备好迎接黄金时段。 :-) 做好这件事真的很难:不同的操作系统有不同的功能和方法来进行 FS 监控,如果你有多个存储库,最好有一个监视器用于多个存储库。还有潜在的安全/隐私问题。这是一个好主意,也许我们可以避免在一次大结账时显示一百万个文件,但这很难。
猜你喜欢
  • 2012-08-23
  • 2012-08-26
  • 2016-10-16
  • 2020-12-15
  • 2017-02-19
  • 1970-01-01
  • 2012-01-21
  • 2016-10-28
相关资源
最近更新 更多