作为一个学习项目,我想制作一个 git 可视化工具,实时显示底层 git 提交图。为此,我的可视化程序需要在每次图表更改时接收更新。
我知道 git 有许多命令的钩子。我的问题是:post-XXXXX 钩子是否涵盖了 git 存储库可以更改的整个空间?
一个后续问题:有没有更好的方法让进程以编程方式“监听”git repo?使用 git hooks 的缺点是我必须修改 repo 才能将其可视化。理想情况下,我不必那样做。
作为一个学习项目,我想制作一个 git 可视化工具,实时显示底层 git 提交图。为此,我的可视化程序需要在每次图表更改时接收更新。
我知道 git 有许多命令的钩子。我的问题是:post-XXXXX 钩子是否涵盖了 git 存储库可以更改的整个空间?
一个后续问题:有没有更好的方法让进程以编程方式“监听”git repo?使用 git hooks 的缺点是我必须修改 repo 才能将其可视化。理想情况下,我不必那样做。
虽然 git 命令行实用程序处理钩子,但还有其他方法可以更改 git 对象存储。其中一些方法不一定处理钩子。
例如,非常流行的 git 库libgit2目前不支持 hooks。相当多的实用程序使用 libgit2。
此外,git commit -n
即使在命令行中也可以使用关闭挂钩。
换句话说,钩子不能保证你会看到对 git 对象存储的每一次更新。
让您注意变化的另一种方法可能是简单地观察分支指针。这应该是非常便宜的过程。您还可以设置操作系统本地方法来监听分支文件的更改(例如Linux 的inotify和 Windows 的FindFirstChangeNotification/WaitForMultipleObjects)。