diff --git includes/VersioncontrolGitBackend.php includes/VersioncontrolGitBackend.php
index 865104c..3cd07cd 100644
--- includes/VersioncontrolGitBackend.php
+++ includes/VersioncontrolGitBackend.php
@@ -9,6 +9,10 @@ class VersioncontrolGitBackend extends VersioncontrolBackend {
       'item' => 'VersioncontrolGitItem',
     );
 
+  public $classesControllers = array(
+    'operation' => 'VersioncontrolGitOperationController',
+  );
+
   public function __construct() {
     parent::__construct();
     $this->name = 'Git';
diff --git includes/VersioncontrolGitOperation.php includes/VersioncontrolGitOperation.php
index 556b35f..59d15b4 100644
--- includes/VersioncontrolGitOperation.php
+++ includes/VersioncontrolGitOperation.php
@@ -2,6 +2,38 @@
 
 class VersioncontrolGitOperation extends VersioncontrolOperation {
 
+  public $author_name = '';
+
+  public $committer_name = '';
+
+  public $parent_commit = '';
+
+  public $merge = FALSE;
+
+  protected function backendInsert() {
+    db_insert('versioncontrol_git_operations')
+      ->fields(array(
+        'vc_op_id' => $this->vc_op_id,
+        'author_name' => $this->author_name,
+        'committer_name' => $this->committer_name,
+        'parent_commit' => $this->parent_commit,
+        'merge' => (int) $this->merge,
+      ))
+      ->execute();
+  }
+
+  protected function backendUpdate() {
+    db_update('versioncontrol_git_operations')
+      ->fields(array(
+        'author_name' => $this->author_name,
+        'committer_name' => $this->committer_name,
+        'parent_commit' => $this->parent_commit,
+        'merge' => (int) $this->merge,
+      ))
+      ->condition('vc_op_id', $this->vc_op_id)
+      ->execute();
+  }
+
   /**
    * Implementation of abstract method.
    */
diff --git includes/VersioncontrolGitOperationController.php includes/VersioncontrolGitOperationController.php
new file mode 100644
index 0000000..b8730ef
--- /dev/null
+++ includes/VersioncontrolGitOperationController.php
@@ -0,0 +1,17 @@
+<?php
+
+class VersioncontrolGitOperationController extends VersioncontrolOperationController {
+
+  /**
+   * Extend the base query with the git backend's additional data in
+   * {versioncontrol_git_operations}.
+   *
+   * @return SelectQuery
+   */
+  protected function buildQueryBase($ids, $conditions) {
+    $query = parent::buildQueryBase($ids, $conditions);
+    $alias = $this->addTable($query, 'versioncontrol_git_operations', 'vcgo', 'base.vc_op_id = vcgo.vc_op_id');
+    $query->fields($alias, drupal_schema_fields_sql('versioncontrol_git_operations'));
+    return $query;
+  }
+}
\ No newline at end of file
diff --git versioncontrol_git.info versioncontrol_git.info
index 5b25a9f..32bafb5 100644
--- versioncontrol_git.info
+++ versioncontrol_git.info
@@ -10,3 +10,4 @@ files[] = includes/VersioncontrolGitBackend.php
 files[] = includes/VersioncontrolGitRepository.php
 files[] = includes/VersioncontrolGitItem.php
 files[] = includes/VersioncontrolGitOperation.php
+files[] = includes/VersioncontrolGitOperationController.php
diff --git versioncontrol_git.install versioncontrol_git.install
index 0fa1f8e..b264b9b 100644
--- versioncontrol_git.install
+++ versioncontrol_git.install
@@ -8,3 +8,100 @@
  * Copyright 2008 by Jimmy Berry ("boombatower", http://drupal.org/user/214218)
  * Copyright 2009 by Cornelius Riemenschneider ("CorniI", http://drupal.org/user/136353)
  */
+
+function versioncontrol_git_schema() {
+  $schema = array();
+  $schema['versioncontrol_git_operations'] = array(
+    'description' => 'A one-to-one table extending {versioncontrol_operations} with some additional git-specific data.',
+    'fields' => array(
+      'vc_op_id' => array(
+        'description' => 'Foreign key to {versioncontrol_operations}.vc_op_id.',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+      ),
+      'author_name' => array(
+        'description' => "Author's user.name field from a git commit or tag object.",
+        'type' => 'varchar',
+        'length' => 64,
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'committer_name' => array(
+        'description' => "Committer's user.name field from a git commit or tag object.",
+        'type' => 'varchar',
+        'length' => 64,
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'parent_commit' => array(
+        'description' => 'SHA-1 hash of the parent commit. Same as the value recorded in {versioncontrol_operations}.revision',
+        'type' => 'char',
+        'length' => 40,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'merge' => array(
+        'description' => 'Boolean indicating whether or not the operation is a merge commit.',
+        'type' => 'int',
+        'length' => 'tiny',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+    ),
+    'primary key' => array('vc_op_id'),
+  );
+
+  return $schema;
+}
+
+function versioncontrol_git_update_6201() {
+  $ret = array();
+
+  $schema = array(
+    'description' => 'A one-to-one table extending {versioncontrol_operations} with some additional git-specific data.',
+    'fields' => array(
+      'vc_op_id' => array(
+        'description' => 'Foreign key to {versioncontrol_operations}.vc_op_id.',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+      ),
+      'author_name' => array(
+        'description' => "Author's user.name field from a git commit or tag object.",
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'committer_name' => array(
+        'description' => "Committer's user.name field from a git commit or tag object.",
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'parent_commit' => array(
+        'description' => 'SHA-1 hash of the parent commit. Same as the value recorded in {versioncontrol_operations}.revision',
+        'type' => 'char',
+        'length' => 40,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+      'merge' => array(
+        'description' => 'Boolean indicating whether or not the operation is a merge commit.',
+        'type' => 'int',
+        'size' => 'tiny',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+    ),
+    'primary key' => array('vc_op_id'),
+  );
+
+  db_create_table($ret, 'versioncontrol_git_operations', $schema);
+
+  return $ret;
+}
\ No newline at end of file
diff --git versioncontrol_git.log.inc versioncontrol_git.log.inc
index 114dba5..e1f3b91 100644
--- versioncontrol_git.log.inc
+++ versioncontrol_git.log.inc
@@ -83,7 +83,7 @@ function _versioncontrol_git_log_update_repository(VersioncontrolGitRepository &
 
   // Insert new commits in the database.
   foreach ($commits_new as $hash) {
-    $command = "git show --numstat --summary --pretty=format:\"%H%n%P%n%aN <%ae>%n%cN <%ce>%n%ct%n%s%n%b%nENDOFOUTPUTGITMESSAGEHERE\" " . escapeshellarg($hash);
+    $command = "git show --numstat --summary --pretty=format:\"%H%n%P%n%an%n%ae%n%cn%n%ce%n%ct%n%s%n%b%nENDOFOUTPUTGITMESSAGEHERE\" " . escapeshellarg($hash);
     $output = _versioncontrol_git_log_exec($command);
     _versioncontrol_git_log_parse_and_insert_commit($repository, $output, $branches_in_db_by_name);
   }
@@ -281,20 +281,22 @@ function _versioncontrol_git_parse_items(&$logs, &$line, $data, $parents) {
  * @param array $branch_label_list An associative list of branchname => VersioncontrolBranch
  */
 function _versioncontrol_git_log_parse_and_insert_commit(VersioncontrolRepository $repository, $logs, $branch_label_list) {
-  // Get Revision
+  // Get commit hash (vcapi's "revision")
   $revision = trim(next($logs));
 
-  // Get $parents
+  // Get parent commit hash(es)
   $parents = explode(' ', trim(next($logs)));
   if ($parents[0] == '') {
     $parents = array();
   }
   $merge = isset($parents[1]); // Multiple parents indicates a merge
 
-  // Get author
-  $author = trim(next($logs));
-  // Get committer
-  $committer = trim(next($logs));
+  // Get author data
+  $author_name = trim(next($logs));
+  $author_email = trim(next($logs));
+  // Get committer data
+  $committer_name = trim(next($logs));
+  $committer_email = trim(next($logs));
 
   // Get date as timestamp
   $date = trim(next($logs));
@@ -325,8 +327,12 @@ function _versioncontrol_git_log_parse_and_insert_commit(VersioncontrolRepositor
   $op_data = array(
     'type' => VERSIONCONTROL_OPERATION_COMMIT,
     'revision' => $revision,
-    'author' => $author,
-    'committer' => $committer,
+    'author' => $author_email,
+    'author_name' => $author_name,
+    'committer' => $committer_email,
+    'committer_name' => $committer_name,
+    'parent_commit' => reset($parents),
+    'merge' => $merge,
     'date' => $date,
     'message' => $message,
     'repository' => $repository,
