MainMa's answer is great but it should be noted that this is a prime case for continuous integration. Setting up a machine (either a hosted solution or one of your own) that will identify when a commit has come in, compile the code, run appropriate tests, and build the deployment package if the tests succeed. This approach could be taken a step further and automate a scheduled deployment when your criteria for a deployment has been met.

Is it an absolute must that we ignore/delete all compiled files before committing?
I use ssh on my machine, and have set up a long not-human-friendly passphrase which is saved in my password manager.
What makes me crazy every time is that I cannot paste into the window pictured below. I know the Remember password in my keychain option and use it. Sometimes I have to enter a new one though. Why can't I paste into a password field? We're in the 21th century and password managers have been invented! Apple...

Same thing for the dialog which pops up when plugging in encrypted disks.

And yes, I'd rather write a post on stack exchange than type the passphrase even once.



Some updates:


I found out how i can circumvent the stupid dialog: just use ssh-add ~/.ssh/id_rsa, and then I can paste the passphrase into the terminal.
However, it does not work with my passphrase... using openssl rsa -text -in id_rsa I can decrypt the key without problems, but the same phrase does not get accepted by OSX's ssh-agent. My Key is encrytped using pkcs8 (read here), mattmcmanus seems to be right...
using ssh-add still not fixes the thing for encrypted disks, and my curiosity for why apple would do such something.
I answered the question regarding PKCS#8 below.

