Moved my Drupal Development Workflow to Git
Over the past month or so I've slowly been overhauling my local development environment. I'll save the before and after details for a later post but today I thought I'd give a mention to what I think will be the single biggest improvement in my workflow - implementing Git.
Git is what's known as a version control system. Basically it's software that keeps track of all the versions of digital work. This is something that's really important for the way software is developed these days, because it's frequently a team of people doing the work and keeping everyone up to date with progress can be a problem.
If you've ever worked on a document, a presentation or a letter for instance, that required input from someone else you know how important version control can be. Suppose you complete a first draft of your resume and you want to run it by a couple of people for their inputs. You send it off in an email and wait for their replies.
An hour goes by, then two, then a day. The next morning you look at your resume and see a couple of places where you could have phrased something better, and you fix a typo. You click save, and check your email and find a reply with some feedback. The returned document is an improvement on your old document, but the improvements were made to an old version of the resume you have already updated yourself. See the problem? This is the kind of problem version control is meant to deal with.
In my case, I'm just a single developer working on my own projects. But I have a lot of different projects going on at any given time. All of them are Drupal development projects, but some are Drupal themes, some are custom Drupal modules. Development comes in bursts. You never know when an idea will come, or when you'll figure out a new and better way to do something.
I'll try out a new idea and if it works, great. If not, well that's where version control helps. Git gives me the ability to keep any number of working versions of all the code I develop alive and healthy. If I get a new idea for how to accomplish something already in production, Git gives me the ability to grab the original Drupal module or theme code and try out my new idea. If it works I simply commit the new code. If not, Git still has the old working version preserved for me.
For now my implementation of Git is purely local to my own development machine. In the near future Drupal development will be moving to Git for version control. For once I'm ahead of the curve. When Drupal moves to Git I'll be ready, willing, and able.