Git things done

git-logo-cc-by-300x300Been meaning to post this for a while. I've been using Git for a number of years now and my last two jobs had me using it heavily. I love git and honestly have managed to block the memories of what my life was like when I tried to manage my version control life with Subversion.

We've also been discussing Git a lot in our SDPHP Group.  I am not going to get into a long post about the coolness of Git and why you should be using it, that is kind of an old discussion at this point. If you are not using Git nowadays I will assume you (a) Don't want to use Git, (b) Don't have a good enough understanding of Git, (c) Don't know what Git is. If you are in category (c) you are probably not a developer and this will be of no interest to you. If you are in category (a), well then I am sure you have your reasons and they are valid. If you are in category (b) then let me share a few things with you. First are some links to some great resources on how to use Git. These groups know what they are talking about and do a fantastic job explaining things, way better than I could ever do.

Helpful links

I also have a couple of presentations I can share with you. The first one was by John Congdon (@johncongdon) and was presented to the SDPHP Group at our monthly meetup Downtown back on Sept 11

I also did a smaller presentation to the SDPHP Study Group earlier on Aug 26

I hope you find some of this information helpful and/or useful.

Asking Github how it’s feeling

One recent project I worked on depended very heavily on Github. If you don't know what Github is it's a hosting service for projects that uses Git version control and if I really needed to explain that to you then the rest of this post probably won't do much for you.

The problem with depending on external services and API is that when they are having a bad day, then you are probably having a bad day. The project I was a part of was a Node application that would have to be built and rebuilt several times on several different machines, we are talking in the thousands. This application would reach out to Github for several modules which were essential to the build process. Needless to say there are ways to architect this solution to remove this dependency but that isn't the point of this post šŸ˜‰

Github has a great status page which does a good job at keeping you informed on the current going on with the Github platform but the problem with it is you need to go to the page, get the status, and if there is an issue continually return to see if there are any updates. Thanks to developer Romin Irani (@iromin on twitter) you can now interact with Github over IM and more importantly have his GitHub Status Bot send you notifications whenever Github has any sort of disruption, planned or otherwise.

GitHub Status Bot is pretty simple and easy to use. Its worth noting that GitHub Status Bot is not an "official" Github Bot and is hosted Google AppEngine. Romin Irani also makes his source code available on Github

Using GitHub Status Bot is pretty straight forward

  • First, simply add [email protected] to your Gtalk buddy list
  • Once added send a message to the bot by typing 'help'. This will provide you a list of commands that the bot will respond to.

GitHub Status Bot - Help

  • 'status' gives you the current system status


  • 'last-message' gets the last human communication, status, and timestamp.


  • 'messages' will get you a list of the most recent communications with status and timestamp.


  • 'subscribe' is a key command, what this does is lets the bot know you want to be notified via Google Talk if GitHub is down.


  • 'unsubscribe' will remove yourself from any 'GitHub is down' status updates. I've found, unless I was having issues or needed to keep a close eye on Github that the status message will tend to get a little chatty for day to day following.


  • And finally if you just want to be reminded who you have to thank for this awesome service, and what version you are on, type in 'about'


That's pretty much it, hope you find the GitHub Status Bot as helpful as I do.

BASH Prompt Pr0n

So I've been asked a couple of times for this post and I keep not getting around to it so thought I would take some time and get this out. My bash prompt is very informative, long, and functional and that is they way I like it. One prompt actually results in 2 lines in my terminal being used. This is my current Bash Prompt in terminal:


  1. First thing to notice is my command prompt is actually on the second line, below all the information. This is by design.
  2. The first part of the prompt in the typical username and computer name. Nothing special. A lot of people remove this but I keep it. When all the voices in my head start shouting at each other I can always look at my command prompt and remember who I am.
  3. Next is my location on the computer. Again, a lot of people will just have this piece represent only the current folder but I like to see the entire path. Main reason is I might have several Project folders on my system and this helps me to see which Project folder I am in.
  4. Then comes this little piece of magic that I love, my Git Branch. This section only displays when I am in a directory structure related to a Git checkout and shows me which branch of that git checkout I am working on. This section, depending on your system, may require different set ups. Since I am on my OSX system what I am using is git-completion.bash (or One of the better post on how to install this correctly can be found on a thread. Keep in mind, if I am not on a Git branch none of this section displays, not even the []- which makes it is very clean.
  5. Finally I like to add a time stamp to the end of my prompt. This allows me to return to a console and figure out when I last ran something from that window. It's very helpful. The time doesn't stay current, meaning it won't continue to keep time, it will only show you the time when that prompt was created and that is it.

The prompt does include the different colors for the different sections if your system supports it and most Unix type console do support it. Here is the magic that makes this happen.

There are a couple of ways to play around with this, tweak it until you find what you like, without impacting your system permanently until you want to. At the command prompt simply copy and past the entire line including the word "export", you should be able to see the new prompt immediately. Once you've tweaked it to exactly what you want you can add it to either you .profile or .bash_profile files however you can remove the word export when you do that and just start the line at PS1

If you would like a version without the Git Branch indicator this version should work for you

Here is a link to some other helpful and fun Bash Prompts

Enjoy and Happy Bash'ing
Update: My buddy @johncongdon on twitter pointed out by adding export GIT_PS1_SHOWDIRTYSTATE=1 to your .profile or .bash_profile then you will also get the status of the Git branch.


Why aren’t you using git flow?

Attended another great presentation put on by the San Diego PHP User Group (which I am now a co-organizer of) around a workflow built off Git called Gitflow, presented by John Congdon (@johncongdon). Unfortunately the slides, as good as they are, don't capture all the great discussion and examples that were sparked up from the presentation but its a good start.

As I mentioned, I've taken a more active role is the SDPHP Group so if you have any question feel free to ping me. You can also keep tabs on the groups in the normal spots:
Twitter: @sdphp
Facebook: San Diego PHP
Meetup: SanDiegoPHP

Getting Git to work in Textmate, Resolving "sh: git: command not found" error

I've been doing a lot of work with Git lately and its great. I downloaded and installed the Git Bundle for Textmate but itĀ didn't Ā seem to work, always returning the error message "sh: git: command not found". Since I did most of my Git work from the command line I just ignored it but for some reason tonight I decided I needed to fix.

Since I knew Git worked on my system, it must have been something with the way Textmate was configured. I couldn't figure out how to confiugre Textmate to point to my Git install so I guess I cheated and I created a symbolic link on my system to point to my Git install. It seems to have corrected my issue with Textmate.

The command I ran was pretty simple

sudo ln -s /usr/local/git/bin/gitĀ /usr/bin/git

That's it, Textmate is now happy with my Git install.

Posted via email from shocm