【问题标题】:Best approach for pre-processing files before committing to Git?在提交到 Git 之前预处理文件的最佳方法是什么?
【发布时间】:2021-04-26 20:57:57
【问题描述】:

我以前从来没有理由调查过 git hooks 的使用,所以我只提供很少的信息。

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

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

以我的一个项目为例,my Scratch BBC Micro emulator。如果您在my parsing tool 中输入项目编号 (515569918),那么您可以看到我希望与实际 SB3 一起自动提交的输出。

这是可以通过 git hooks 实现的吗?如果可以,有人可以提供实现过程的一般概述吗?

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

【问题讨论】:

    标签: git githooks mit-scratch


    【解决方案1】:

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

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

    1. 让用户大吃一惊。
    2. 有些提交涉及多个索引,在这种情况下,结果永远不会好。

    简而言之,不要这样做。如果您想使用 Git 后端进行用户并不真正意识到的提交,请改为使用 Git 后端,让用户在一些事情并不那么令人惊讶的空间中工作。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-03
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 2018-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多