Git钩子 - 如何在每次提交时重新生成一个文件并将其添加到提交中?

4
我希望能够自动生成一个文件,如果它已更改,则将其添加到提交中。 如果可能的话,应该使用哪些钩子?
上下文:我正在编写一个CSS库。 它有几个CSS文件,并且最终我想生成一个紧凑且最小化的版本。 现在我的工作流程是:
1.修改css文件x.css和y.css 2.git add x.css y.css 3.执行minimize.sh,该脚本解析我库中的所有css文件,将它们最小化并生成一个min.css文件 4.git add min.css 5.git commit -m“修改x和y做foo和bar”
我希望通过git hook自动完成步骤3和4。这可行吗?
我以前从未使用过git hooks。 阅读完man page后,我认为需要使用pre-commit钩子。 但是我可以调用git add min.css吗? 这会破坏互联网吗?

编辑:成功了!我并没有创造黑洞或者其他什么东西!

这是我 .git/hooks/pre-commit 文件的代码:

#!/bin/sh
exec minimize.sh
exec git add oocss.min.css

文档没有提到我需要将其设置为可执行文件,否则它将无法正常工作。

如果您对我的最小化方法感兴趣,我使用了juicer - 最小化命令是:

exec juicer merge --force my-uncompressed-file.css
1个回答

5

不会出现任何问题。你可以在 pre-commit 钩子中自由使用 git add


2
谢谢你的回答。我现在感觉像一个邪恶的天才。Buahahahaha。发射导弹! - kikito
git add 对我来说在 pre-commit 钩子中也无法工作,它会将文件添加到下一次提交而不是当前的提交。 - Rubycut
文件实际上已经在pre-commit中添加了,即使用git add命令,但是在vim编辑器中显示的提交信息并不包括它。 - Li Dong
我也遇到了同样的问题,在 pre-commit 中使用 git add 遇到了 index.lock 的阻碍。@Aristotle Pagaltzis 先生,您能详细解释一下如何实现您的解决方案吗? - frhd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接