• Like
Intro to Git for Drupal 7
Upcoming SlideShare
Loading in...5

Thanks for flagging this SlideShare!

Oops! An error has occurred.

Intro to Git for Drupal 7


A fairly in-depth introduction to the basics of working with Git version control and Drupal 7.

A fairly in-depth introduction to the basics of working with Git version control and Drupal 7.

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On SlideShare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. Intro to Git for DrupalOr: How I Learned To Stop Worrying and Love Version Control
  • 2. What’s a version control system?• An application that allows you to record changes to your codebase in a structured and controlled fashion
  • 3. Why do I need that?• makes it way easier to undo errors / roll back to earlier versions of code• makes it way easier to share a code base between developers without creating conflicts
  • 4. • makes it waaaaay way easier to deploy changes from development to staging to production environments
  • 5. Analogy:• Using Drupal without a version control system is like rock climbing without any safety gear
  • 6. • You may be able to get away with it for awhile, but if you slip, you’re going to die.
  • 7. Some popular version control systems• CVS - Concurrent Versions System• SVN - SubVersioN• Git• Mercurial• Bazaar• LibreSource
  • 8. Drupal: From CVS to Git• drupal.org used to have all module and project code under CVS• Drupal’s use of CVS system began January 15, 2001 with check in of Drupal 3.0.0 by Dries Buytaert
  • 9. • worked great for a few years• over time CVS development stagnated• other systems began to appear, newer and hotter• decision to switch from CVS to Git was made in 2010
  • 10. • Drupal officially switched from CVS to Git in 2011 on February 24 at 6:08 pm EST• excellent obituary for CVS by Larry Garfield (Crell - http://drupal.org/user/ 26398) at http://www.garfieldtech.com/ blog/cvs-obituary• now entire Drupal project and all modules, distributions and themes use Git
  • 11. So what’s Git?• initially created in 2005 by Linus Torvalds for Linux kernel development• written mostly in C• it’s a *distributed* version control system, which means...
  • 12. • every Git working directory contains the complete repository and history and full revision tracking capabilities• you’re not dependent on a central server and you don’t have to be online• it’s rippingly fast - much faster than SVN, CVS, and other systems that have a lot of network latency• snapshot-based
  • 13. What’s a repository?• it’s a directory that contains all of the data and metadata for your Git-controlled project• called .git/ and it resides in your Drupal site root directory
  • 14. Basic Git lingo• init• commit • head• branch • add• merge • status• push • log• pull
  • 15. Shut up already how do I start
  • 16. Git thee to a command line• there are some GUI applications for Git, but it’s essentially a command line tool• it’s by far the most fun to use it on the command line
  • 17. • in the following example we’ll be using the OS X terminal to connect to a local Ubuntu 12.04 server running in VirtualBox
  • 18. • we’re going to a) install Git on the server b) set up a new Drupal site c) put the site into a local Git repository (repo) d) create a remote on GitHub e) make a commit locally and push it to the remote GitHub repo
  • 19. Logging in to the server
  • 20. To install Git on Ubuntu: apt-get install git-core
  • 21. Set up credentialsYou need to let Git know who you are so itcan label the commits you make.So type...
  • 22. git config --global user.name "Your Name"git config --global user.email "your_email@youremail.com"
  • 23. Here we have afresh localDrupalinstallation.Note that everyDrupal installincludesa .gitignore file
  • 24. .gitignore files tell Git what *not* to put in therepository, i.e.: What to ignore.The default Drupal .gitignore file contains this:
  • 25. That tells Git to ignore allsettings.php files, all files/ directories,and all private/ directories.You can override and add tothe .gitignore file.
  • 26. Initialize!To create your repository, navigate to your Drupal root folder and type: git init
  • 27. Check statusThe Git repository starts out empty.You’ll need to add files to it. But first - check the status. Type: git status
  • 28. You’ll see a listof “untracked”files.You can addthem one at atime with “gitadd‘filename’”, oryou can addthem all atonce with...
  • 29. git add .That adds everything.
  • 30. Now all of thefiles except forthe onesin .gitignore havebeen staged -they’re not in therepo yet, butthey’re ready tobe put there.How do you putthem there?
  • 31. git commit Actually you’ll want to type:git commit -m “Some text describing your commit”
  • 32. All files have now been committed to therepository.If we type “git status” now, we get this:
  • 33. Now what?• Use GitHub to make your repository available for private or public access
  • 34. Do I have to use GitHub?• No, but it’s really cool and slightly easier than setting up your own Git server• So! - create an account if you don’t have one (it’s free)• login• set up your SSH keys
  • 35. SSH keys?Entering your SSH keys establishes a trustedconnection between your GitHub accountand your development server(s), enablingyou to push and pull commits without havingto constantly enter your login information.
  • 36. You can see a list of your repos on your profile. Click theindicated button to add a new one.
  • 37. Now all of thefiles areshowing in thegithub repo.
  • 38. Dev to GitHub• make a change on your local site and push the change to the GitHub repo• in this case we’re going to install five modules - ctools, features, panels, token, and views
  • 39. If you check out the sites/all/modules folder in theGitHub repo, you’ll notice it only has a README file.
  • 40. Locally, though, we’ve used Drush to download thefive modules, which are sitting in the local copy of thesites/all/modules folder.We want to make those modules show up on theGitHub repo.
  • 41. Running “git status” shows us that the module foldersare untracked - we need to add them.We can get all of them at once by going to sites/all/and typing “git add modules”.
  • 42. Commit ‘emNow we need to commit the changes. So wetype: git commit -a -m “Added five modules - views, panels, ctools, features, and token”And then we push it: git push
  • 43. Now if we go back to GitHub and reload the page,the modules we pushed are all there.