diff --git includes/VersioncontrolAccount.php includes/VersioncontrolAccount.php
index e444a6b..00468a8 100644
--- includes/VersioncontrolAccount.php
+++ includes/VersioncontrolAccount.php
@@ -85,15 +85,27 @@ abstract class VersioncontrolAccount extends VersioncontrolEntity {
       $this->vcs_username, $this->uid, $repo_id
     );
 
+    // Update operations table.
+    // this is assuming 1-1 relation between accounts and uid's
+    //   1. unassign all uid related operations
+    db_query('update {versioncontrol_operations}
+              set author_uid = 0
+              where author_uid = %d and repo_id = %d',
+              $this->uid, $this->repository->repo_id);
+    db_query('update {versioncontrol_operations}
+              set committer_uid = 0
+              where committer_uid = %d and repo_id = %d',
+              $this->uid, $this->repository->repo_id);
+    //   2. assingn all operations related to repo and vcs username
     db_query("UPDATE {versioncontrol_operations}
-      SET uid = 0
-      WHERE uid = %d AND repo_id = %d",
-      $this->uid, $repo_id);
-    // not using data field for now, but backends can
+              SET author_uid = %d
+              WHERE author = '%s' AND repo_id = %d",
+              $this->uid, $this->vcs_username, $this->repository->repo_id);
     db_query("UPDATE {versioncontrol_operations}
-      SET uid = %d
-      WHERE committer = '%s' AND repo_id = %d",
-      $this->uid, $this->vcs_username, $repo_id);
+              SET committer_uid = %d
+              WHERE committer = '%s' AND repo_id = %d",
+              $this->uid, $this->vcs_username, $this->repository->repo_id);
+    // not using data field for now, but backends can
 
     // Let the backend take action.
     $this->backendUpdate($options);
@@ -124,11 +136,14 @@ abstract class VersioncontrolAccount extends VersioncontrolEntity {
     $this->backendInsert($options);
 
     // Update the operations table.
-    // FIXME differentiate author and commiter
     db_query("UPDATE {versioncontrol_operations}
-              SET uid = %d
+              SET author_uid = %d
               WHERE author = '%s' AND repo_id = %d",
               $this->uid, $this->vcs_username, $this->repository->repo_id);
+    db_query("UPDATE {versioncontrol_operations}
+              SET committer_uid = %d
+              WHERE committer = '%s' AND repo_id = %d",
+              $this->uid, $this->vcs_username, $this->repository->repo_id);
 
     // Everything's done, invoke the hook.
     module_invoke_all('versioncontrol_entity_account_insert', $this);
@@ -147,9 +162,13 @@ abstract class VersioncontrolAccount extends VersioncontrolEntity {
     $options += $this->defaultCrudOptions['delete'];
 
     // Update the operations table.
-    db_query('UPDATE {versioncontrol_operations}
-              SET uid = 0
-              WHERE uid = %d AND repo_id = %d',
+    db_query('update {versioncontrol_operations}
+              set author_uid = 0
+              where author_uid = %d and repo_id = %d',
+              $this->uid, $this->repository->repo_id);
+    db_query('update {versioncontrol_operations}
+              set committer_uid = 0
+              where committer_uid = %d and repo_id = %d',
               $this->uid, $this->repository->repo_id);
 
     db_delete('versioncontrol_accounts')
diff --git includes/VersioncontrolOperation.php includes/VersioncontrolOperation.php
index bf74d73..b7fea38 100644
--- includes/VersioncontrolOperation.php
+++ includes/VersioncontrolOperation.php
@@ -22,13 +22,6 @@ abstract class VersioncontrolOperation extends VersioncontrolEntity {
   public $vc_op_id;
 
   /**
-   * Who actually perform the change on the repository.
-   *
-   * @var string
-   */
-  public $committer;
-
-  /**
    * The time when the operation was performed, given as
    * Unix timestamp. (For commits, this is the time when the revision
    * was committed, whereas for branch/tag operations it is the time
@@ -61,6 +54,22 @@ abstract class VersioncontrolOperation extends VersioncontrolEntity {
   public $message;
 
   /**
+   * The Drupal user id of the operation author, or 0 if no Drupal user
+   * could be associated to the author.
+   *
+   * @var int
+   */
+  public $author_uid;
+
+  /**
+   * The Drupal user id of the operation committer, or 0 if no Drupal user
+   * could be associated to the author.
+   *
+   * @var int
+   */
+  public $committer_uid;
+
+  /**
    * The system specific VCS username of the user who executed this
    * operation(aka who write the change)
    *
@@ -69,6 +78,13 @@ abstract class VersioncontrolOperation extends VersioncontrolEntity {
   public $author;
 
   /**
+   * Who actually perform the change on the repository.
+   *
+   * @var string
+   */
+  public $committer;
+
+  /**
    * The type of the operation - one of the
    * VERSIONCONTROL_OPERATION_{COMMIT,BRANCH,TAG} constants.
    *
@@ -93,14 +109,6 @@ abstract class VersioncontrolOperation extends VersioncontrolEntity {
   public $labels = array();
 
   /**
-   * The Drupal user id of the operation author, or 0 if no Drupal user
-   * could be associated to the author.
-   *
-   * @var int
-   */
-  public $uid;
-
-  /**
    * An array of VersioncontrolItem objects affected by this commit.
    *
    * @var array
diff --git includes/views/versioncontrol.views.inc includes/views/versioncontrol.views.inc
index c6c037a..ff2bb07 100755
--- includes/views/versioncontrol.views.inc
+++ includes/views/versioncontrol.views.inc
@@ -201,16 +201,7 @@ function versioncontrol_views_data() {
       'handler' => 'views_handler_argument_date',
     ),
   );
-  $data['versioncontrol_operations']['uid'] = array(
-    'title' => t('User'),
-    'help' => t('The user that did the operation'),
-    'relationship' => array(
-      'base'  => 'users',
-      'base field' => 'uid',
-      'handler' => 'views_handler_relationship',
-      'label' => t('User'),
-    ),
-  );
+
   $data['versioncontrol_operations']['author'] = array(
     'title'    => t('Author'),
     'help'     => t('The Operation Author'),
@@ -227,6 +218,18 @@ function versioncontrol_views_data() {
       'handler' => 'views_handler_argument_string',
     ),
   );
+
+  $data['versioncontrol_operations']['author_uid'] = array(
+    'title' => t('User'),
+    'help' => t('The user that did the operation'),
+    'relationship' => array(
+      'base'  => 'users',
+      'base field' => 'uid',
+      'handler' => 'views_handler_relationship',
+      'label' => t('User'),
+    ),
+  );
+
   $data['versioncontrol_operations']['committer'] = array(
     'title'    => t('Commiter'),
     'help'     => t('The Operation Commiter'),
@@ -243,6 +246,18 @@ function versioncontrol_views_data() {
       'handler' => 'views_handler_argument_string',
     ),
   );
+
+  $data['versioncontrol_operations']['committer_uid'] = array(
+    'title' => t('User'),
+    'help' => t('The user that did the operation'),
+    'relationship' => array(
+      'base'  => 'users',
+      'base field' => 'uid',
+      'handler' => 'views_handler_relationship',
+      'label' => t('User'),
+    ),
+  );
+
   $data['versioncontrol_operations']['revision'] = array(
     'title'    => t('Revision'),
     'help'     => t('The Operation Revision Identifier'),
diff --git versioncontrol.install versioncontrol.install
index 3329ae2..33c9bd7 100644
--- versioncontrol.install
+++ versioncontrol.install
@@ -46,14 +46,6 @@ function versioncontrol_schema() {
         'not null' => TRUE,
         'default' => 0,
       ),
-      'uid' => array(
-        'description' =>
-          'The {users}.uid for the Drupal user corresponding to the VCS-specific username in {versioncontrol_operations}.username, if such an association can be found. 0 otherwise. (The account associations are retrieved from the {versioncontrol_accounts} table.',
-        'type' => 'int',
-        'unsigned' => TRUE,
-        'not null' => TRUE,
-        'default' => 0,
-      ),
       'author' => array(
         'description' => 'VCS specific username of the user who is the original author of this operation. For centralized version control systems this and committer are the same.',
         'type' => 'varchar',
@@ -61,6 +53,14 @@ function versioncontrol_schema() {
         'not null' => TRUE,
         'default' => '',
       ),
+      'author_uid' => array(
+        'description' =>
+          'The {users}.uid for the Drupal user who authored this commit, corresponding to the value in {versioncontrol_operations}.author. If no such association can be found, then 0.',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
+      ),
       'committer' => array(
         'description' => 'VCS specific username of the user who executed this operation. For distributed version control systems, this should be the author, not the committer. For centralized version control systems this and author are the same.',
         'type' => 'varchar',
@@ -68,6 +68,14 @@ function versioncontrol_schema() {
         'not null' => TRUE,
         'default' => '',
       ),
+      'committer_uid' => array(
+        'description' =>
+          'The {users}.uid for the Drupal user who made this commit (but perhaps was not the author), corresponding to the value in {versioncontrol_operations}.committer. If no such association can be found, then 0.',
+        'type' => 'int',
+        'unsigned' => TRUE,
+        'not null' => TRUE,
+        'default' => 0,
+      ),
       'revision' => array(
         'description' =>
           'VCS specific global revision identifier, like "1234" for Subversion or some SHA-1 hash for various distributed version control systems. Empty string if the VCS does not support atomic commits / global revisions.',
@@ -87,9 +95,10 @@ function versioncontrol_schema() {
       'type' => array('type'),
       'repo_id' => array('repo_id'),
       'date' => array('date'),
-      'uid' => array('uid'),
       'author' => array('author'),
+      'author_uid' => array('author_uid'),
       'committer' => array('committer'),
+      'committer_uid' => array('committer_uid'),
       'revision' => array('revision'),
     ),
     'primary key' => array('vc_op_id'),
@@ -794,3 +803,34 @@ function versioncontrol_update_6306() {
 
   return $ret;
 }
+
+/* Allow independent uid mappings for both author and committer data.
+ *
+ * @return array
+ */
+function versioncontrol_update_6307() {
+  $ret = array();
+  $author_uid_spec = array(
+    'description' =>
+      'The {users}.uid for the Drupal user who authored this commit, corresponding to the value in {versioncontrol_operations}.author. If no such association can be found, then 0.',
+    'type' => 'int',
+    'unsigned' => TRUE,
+    'not null' => TRUE,
+    'default' => 0,
+  );
+  $committer_uid_spec = array(
+    'description' =>
+      'The {users}.uid for the Drupal user who made this commit (but perhaps was not the author), corresponding to the value in {versioncontrol_operations}.committer. If no such association can be found, then 0.',
+    'type' => 'int',
+    'unsigned' => TRUE,
+    'not null' => TRUE,
+    'default' => 0,
+  );
+
+  db_add_field($ret, 'versioncontrol_operations', 'committer_uid', $committer_uid_spec);
+  db_change_field($ret, 'versioncontrol_operations', 'uid', 'author_uid', $author_uid_spec);
+
+  // Safe initialization that'll get some good values in for the committer uid.
+  db_query('UPDATE {versioncontrol_operations} SET committer_uid = author_uid WHERE (committer = author OR committer = "")');
+  return $ret;
+}
diff --git versioncontrol_account_status/versioncontrol_account_status.module versioncontrol_account_status/versioncontrol_account_status.module
index 5c05c33..3ae35fe 100644
--- versioncontrol_account_status/versioncontrol_account_status.module
+++ versioncontrol_account_status/versioncontrol_account_status.module
@@ -931,7 +931,7 @@ function versioncontrol_account_status_versioncontrol_entity_account_insert($vcs
     // the caller doesn't know anything about this module.
     $additional_data = array(
       'status_data' => array(
-        'uid' => $vcs_account->uid,
+        'uid' => $vcs_account->committer_uid,
         'repo_id' => $vcs_account->repo_id,
         'motivation' => 'Inserted programmatically.',
         'status' => VERSIONCONTROL_ACCOUNT_STATUS_APPROVED,
