微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在提交到 Git 之前预处理文件的最佳方法?

我之前从来没有理由调查过 git hooks 的使用,所以我在这里的信息很少。

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

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

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

这是否可以通过 git hooks 实现,如果可以,有人可以提供实施过程的总体概述吗?

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

解决方法

预提交钩子可以对 Git 的索引进行调整。 (Git 提交的不是来自工作树中的文件,而是来自 Git 索引中的内容。)

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

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

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。