I'm looking for a way to have git-commit
wait for standard input. I'm coding this in PHP
, as my bash
skills are non-existant, so I thougth doing a regular
<?php
$input = trim(fgets(STDIN));
fscanf(STDIN, "%d\n", $line);
?>
would do the trick, and wait until I write stuff in to continue, but it just goes ahead and continues executing my PHP script anyways.
The idea behind this is that after I tag a release, git will push HEAD
to the testing webserver, send a couple of tweets, and let me write in some details about the release in the CHANGELOG.
While I can achieve the writing to a file (using exec('mate -w')
), I'd like it to hang on until I do a quick test on the server. This would enable me to rollback if I notice any errors (lazy, I know).
Thanks for any help!
Most git hooks either have something special fed to there stdin, or have stdin detached from the terminal. They are all designed to be run non-interactively, so I don't believe that a hook is suitable for what you want to do. You can, of course, manually talk to /dev/tty
but I don't think that it's a very good idea.
I also don't believe that the 'pre-commit' hook is suitable to your task, surely not every commit that you make will be a release of some sort? A 'post-receive' hook on the testing webserver machine sounds more appropriate.
I need user input in my post-merge hook (written in PHP).
I solved it with this piece of code: trim(exec('exec < /dev/tty && read input && echo $input'))
Don't ask, it works ;)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With