I’d like to automatically generate a file and add it to a commit if it has changed. Is it possible, if so, what hooks should I use?
Context: I’m programming a CSS library. It has several CSS files, and at the end I want to produce a compacted and minimized version. Right now my workflow is:
- Modify the css files
x.cssandy.css git add x.css y.css- Execute
minimize.shwhich parses all the css files on my lib, minimizes them and produces amin.cssfile git add min.cssgit commit -m 'modified x and y doing foo and bar'
I would like to have steps 3 and 4 done automatically via a git hook. Is that possible?
I’ve never used git hooks before. After reading the man page, I think I need to use the pre-commit hook. But can I invoke git add min.css, or will I break the internet?
EDIT: It worked! And I didn’t create a black hole or anything!
Here’s the code of my .git/hooks/pre-commit file:
#!/bin/sh
exec minimize.sh
exec git add oocss.min.css
The documentation didn’t mention that I had to make it executable, or it would not work.
In case you are interested in how did I minimize, I used juicer – the minimizing command is:
exec juicer merge --force my-uncompressed-file.css
No, it won’t break anything. You can freely use
git addin apre-commithook.