diff --git a/drush_make.download.inc b/drush_make.download.inc
index b802533..faf6349 100644
--- a/drush_make.download.inc
+++ b/drush_make.download.inc
@@ -184,7 +184,6 @@ class DrushMakeDownload_Get extends DrushMakeDownload {
 
 class DrushMakeDownload_Git extends DrushMakeDownload {
   function download() {
-    // @TODO implement revisions, tags
     $name = $this->project->name;
     $tmp_path = $this->project->tmp_path;
     $download = $this->project->download;
@@ -220,6 +219,16 @@ class DrushMakeDownload_Git extends DrushMakeDownload {
           drush_make_error('DOWNLOAD_ERROR', dt("Unable to check out branch %branch.", array('%branch' => $download['branch'])));
         }
         chdir($cwd);
+      } elseif ($download['revision']) {
+        $cwd = getcwd();
+        chdir($tmp_path . '/' . $name);
+        if (drush_shell_exec("git checkout %s", $download['revision'])) {
+          drush_log(dt("Checked out revision %revision.", array('%revision' => $download['revision'])), 'ok');
+        }
+        else {
+          drush_make_error('DOWNLOAD_ERROR', dt("Unable to check out revision %revision.", array('%revision' => $download['revision'])));
+        }
+        chdir($cwd);
       }
       // Remove .git/ directory if working-copy flag was not specified.
       if (!$wc && file_exists($tmp_path . '/' . $name . '/.git')) {
