The Git package on Ubuntu (and probably other distributions as well) ships with a script called post-receive-email. This is a shell script that uses sendmail to deliver emails. Now, I am no friend of sendmail. I find it much to complex to configure and get working for my taste. After a bit of searching on the net I failed to find any suitable replacement script. A suitable replacement script would be something that didn't use sendmail and is preferably written in Python. I did find a script written in Ruby but that didn't please me either. Mainly because I don't use Ruby and did not want the headache of trying to get that script to work again when I, at some point in the future, have to reinstall my server.
But it so simple to send emails using TLS in Python:
import smtplib server = smtplib.SMTP('smtp.gmail.com', 587) server.ehlo() server.starttls() server.ehlo() server.login('fromuser@gmail.com', 'mypassword') server.sendmail('fromuser@gmail.com', 'touser@example.com', 'HELLO') server.rset() server.quit()
Great, This looks like an excuse to write my post-receive script in Python. So I did! If you are in a similar need to send Git commit emails, authenticating using TLS and with a Python script (or just curious), then please feel free to take a look at my script: http://github.com/brasse/post_receive_email.py.
$ rpm -ql postfix | grep bin/sendmail
ReplyDelete/usr/sbin/sendmail.postfix
$ ls -l /etc/alternatives/mta
lrwxrwxrwx 1 root root 26 Dec 21 17:19 /etc/alternatives/mta -> /usr/sbin/sendmail.postfix*
Where do I put this file, and how do I set up the hook? Do I just drop the file in .git/hooks and put
ReplyDeletepython post_recieve_email.py
into .git/hooks/post-receive and make it executable? Is there a way I can do it server side so that all pushes are emails and not everyone has to have python installed locally (even though everyone does)?
Rhettigan, yes, if you use something serverside, like, say, gitolite or gitosis, you just have to add the hook to yout .git/hooks folder in each of your repos (and you can also set it as the default post-receive template)
ReplyDeleteGreat and I have a dandy offer: Where To Buy Houses That Need Renovation home renovation on a budget
ReplyDelete