tags:

views:

350

answers:

1

Hi, 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!

A: 

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.

Charles Bailey
Yes, actually I found I'd be better off keeping some variables on the .git/config file for these purposes, and having the server do these related tasks.It was more a problem of my idea of a workflow than git itself, it turns out.Thanks!
Rob