I have a common command-line pattern I grew tired of typing. An example
$ mvn verify | tee verify.out
I use this pattern so often as I want to both watch the build on screen, and have a save file to grep when something goes wrong. Sometimes I also find myself telling the computer:
$ mvn verify | tee verify.out $ mv verify.out verify-old.out $ $EDITOR pom.xml $ mvn verify | tee verify.out $ diff verify-old.out verify.out
I want to see what changed in my build. But ... too much typing! So I automated with
gee, a mashup of
tee. You can think of it as source control for <STDOUT>.
Now I can type:
$ gee -o verify.out mvn verify $ gee -g git diff HEAD^ # Did build output change?
How does it work?
gee keeps a git repository in a hidden directory (
.gee), committing program output there using
tee. It follows simple conventions for file name and commit message (changeable with flags), and accepts <STDIN>:
$ mvn verify | gee -o verify.out -m 'After foobar edit'