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