提交到Git之前预处理文件的最佳方法?

提交到Git之前预处理文件的最佳方法?,git,githooks,mit-scratch,Git,Githooks,Mit Scratch,我以前从来没有理由调查git钩子的使用情况,所以我在这里只提供很少的信息 一般情况下,我希望在将某些文件类型提交到存储库时自动解析它们。具体场景与MIT Scratch相关。整个项目存储为SB3文件(实际上是zip文件)。zip文件包含所有图形和声音资源以及一个project.json文件,其中包含所有精灵中包含的所有脚本。JSON不是很清晰,因为Scratch是一种基于块的语言,不便于阅读 我已经编写了一个PHP工具,它将JSON文件解析为包含在每个sprite中的可读文本脚本。我希望在提交S

我以前从来没有理由调查git钩子的使用情况,所以我在这里只提供很少的信息

一般情况下,我希望在将某些文件类型提交到存储库时自动解析它们。具体场景与MIT Scratch相关。整个项目存储为SB3文件(实际上是zip文件)。zip文件包含所有图形和声音资源以及一个project.json文件,其中包含所有精灵中包含的所有脚本。JSON不是很清晰,因为Scratch是一种基于块的语言,不便于阅读

我已经编写了一个PHP工具,它将JSON文件解析为包含在每个sprite中的可读文本脚本。我希望在提交SB3文件时自动处理这些文件,以便触发我的工具,解析SB3(ZIP)中的JSON文件,然后为其中包含的每个精灵提交一个单独的文本文件(以及提交实际的SB3文件)

作为一个例子,考虑我的一个项目。如果在中输入项目编号(515569918),则可以看到我希望与实际SB3一起自动提交的输出

这是可以通过git钩子实现的吗?如果是的话,有人能提供实现过程的总体概述吗

如果git钩子是错误的方法,那么任何建议都是受欢迎的。只包含sb3的存储库没有什么意义,因为它是一个直接的二进制zip文件。唯一真正的用途是首先提取所有内容,更好的是,在提交之前使用这种在zip文件中解析JSON文件的方法。

预提交挂钩可以调整Git的索引。(Git不是从工作树中的文件进行提交,而是从Git索引中的文件进行提交。)

以这种方式使用预提交挂钩是不明智的,原因有两个:

  • 这让用户感到惊讶
  • 有些提交涉及多个索引,在这种情况下,结果永远不会好
  • 简而言之,不要这样做。如果您想使用Git后端进行用户并不真正意识到的提交,请改为这样做,让用户在一些情况并不令人惊讶的地方工作

    有关其他任务,请参阅Git的污迹和干净过滤器技术。我不知道这是否适用于这里。请注意,此过滤器独立于任何Git挂钩运行