diff --git includes/VersioncontrolRepository.php includes/VersioncontrolRepository.php
index 7c53ae9..03facea 100644
--- includes/VersioncontrolRepository.php
+++ includes/VersioncontrolRepository.php
@@ -93,6 +93,13 @@ abstract class VersioncontrolRepository implements VersioncontrolEntityInterface
 
   protected $built = FALSE;
 
+  /**
+   * An array describing the plugins that will be used for this repository.
+   *
+   * @var array
+   */
+  public $plugins = array();
+
   protected $defaultCrudOptions = array(
     'update' => array('nested' => TRUE),
     'insert' => array('nested' => TRUE),
@@ -131,6 +138,9 @@ abstract class VersioncontrolRepository implements VersioncontrolEntityInterface
     if (!empty($this->data) && is_string($this->data)) {
       $this->data = unserialize($this->data);
     }
+    if (!empty($this->plugins) && is_string($this->plugins)) {
+      $this->plugins = unserialize($this->plugins);
+    }
     $this->built = TRUE;
   }
 
diff --git includes/plugins/user_mapping_methods/versioncontrol_plain_mail/versioncontrol_plain_mail.inc includes/plugins/user_mapping_methods/versioncontrol_plain_mail/versioncontrol_plain_mail.inc
new file mode 100644
index 0000000..f05d6d6
--- /dev/null
+++ includes/plugins/user_mapping_methods/versioncontrol_plain_mail/versioncontrol_plain_mail.inc
@@ -0,0 +1,33 @@
+<?php
+// $Id$
+
+/**
+ * @file
+ * Plain mail user mapping method for versioncontrol.
+ */
+
+/**
+ * Implementation of hook_<name>_versioncontrol_user_mapping_methods().
+ */
+function versioncontrol_versioncontrol_plain_mail_versioncontrol_user_mapping_methods() {
+  return array(
+    'title' => t('Plain mail mapper'),
+    'map author' => 'versioncontrol_plain_mail_map_author',
+    'map committer' => 'versioncontrol_plain_mail_map_committer',
+  );
+}
+
+function versioncontrol_plain_mail_map_author($author) {
+  return versioncontrol_plain_mail_map($author);
+}
+
+function versioncontrol_plain_mail_map_committer($committer) {
+  return versioncontrol_plain_mail_map($committer);
+}
+
+function versioncontrol_plain_mail_map($text) {
+  if ($account = user_load(array('mail' => $text))) {
+    return $account->uid;
+  }
+  return FALSE;
+}
diff --git versioncontrol.admin.inc versioncontrol.admin.inc
index 3501c64..c93acfb 100644
--- versioncontrol.admin.inc
+++ versioncontrol.admin.inc
@@ -619,6 +619,15 @@ function versioncontrol_admin_repository_edit(&$form_state, $repository, $vcs =
     '#size' => 60,
     '#maxlength' => 255,
   );
+  $form['repository_information']['user_mapping_method'] = array(
+    '#type' => 'radios',
+    '#title' => t('User mapping method'),
+    '#description' => t('The way operations should be mapped to drupal users.'),
+    '#default_value' => !is_null($repository)
+    ? $repository->plugins['user_mapping_method']
+    : NULL,
+    '#options' => versioncontrol_user_mapping_methods_get_names(),
+  );
 
   if ($repository_exists && isset($repository->data['versioncontrol']['registration_message'])) {
     $current_registration_message = $repository->data['versioncontrol']['registration_message'];
@@ -786,6 +795,9 @@ function versioncontrol_admin_repository_edit_submit($form, &$form_state) {
     $repository->name                 = $form_state['values']['repo_name'];
     $repository->root                 = $form_state['values']['root'];
     $repository->authorization_method = $form_state['values']['authorization_method'];
+    $repository->plugins              = array(
+      'user_mapping_method' => $form_state['values']['user_mapping_method']
+    );
   }
   else {
     $backends = versioncontrol_get_backends();
diff --git versioncontrol.info versioncontrol.info
index dd2f02f..df3746c 100644
--- versioncontrol.info
+++ versioncontrol.info
@@ -3,6 +3,7 @@ name = "Version Control API"
 description = "An interface to version control systems whose functionality is provided by pluggable back-end modules."
 dependencies[] = autoload
 dependencies[] = dbtng
+dependencies[] = ctools
 dependencies[] = views
 files[] = includes/VersioncontrolAccount.php
 files[] = includes/VersioncontrolBackend.php
diff --git versioncontrol.install versioncontrol.install
index 00d50bf..01f261e 100644
--- versioncontrol.install
+++ versioncontrol.install
@@ -357,6 +357,13 @@ function versioncontrol_schema() {
         'not null' => TRUE,
         'serialize' => TRUE,
       ),
+      'plugins' => array(
+        'description' => t('The list of ctools plugins associated with this repository.'),
+        'type' => 'text',
+        'size' => 'medium',
+        'not null' => TRUE,
+        'serialize' => TRUE,
+      ),
     ),
     'unique keys' => array(
       'name' => array('name'),
@@ -804,7 +811,8 @@ function versioncontrol_update_6306() {
   return $ret;
 }
 
-/* Allow independent uid mappings for both author and committer data.
+/**
+ * Allow independent uid mappings for both author and committer data.
  *
  * @return array
  */
@@ -834,3 +842,20 @@ function versioncontrol_update_6307() {
   db_query('UPDATE {versioncontrol_operations} SET committer_uid = author_uid WHERE (committer = author OR committer = "")');
   return $ret;
 }
+
+/**
+ * Add 'plugins' column to {versioncontrol_repositories}.
+ */
+function versioncontrol_update_6308() {
+  $ret = array();
+  $plugins = array(
+    'description' => 'The list of ctools plugins associated with this repository.',
+    'type' => 'text',
+    'size' => 'medium',
+    'not null' => TRUE,
+    'serialize' => TRUE,
+  );
+  db_add_field($ret, 'versioncontrol_repositories', 'plugins', $plugins);
+  // FIXME add array('user mapping' => 'some_plugin') as default
+  return $ret;
+}
diff --git versioncontrol.module versioncontrol.module
index 2475508..6eb3735 100644
--- versioncontrol.module
+++ versioncontrol.module
@@ -1105,3 +1105,52 @@ function _versioncontrol_get_string_presets() {
 
   return $presets;
 }
+
+/**
+ * Implementation of ctools hook_ctools_plugin_directory().
+ */
+function versioncontrol_ctools_plugin_directory($module, $plugin) {
+  if ($module == 'versioncontrol') {
+    return "includes/plugins/$plugin";
+  }
+}
+
+/**
+ * Fetch metadata on a specific 'user mapping' plugin.
+ *
+ * @param $method
+ *   Name of a versioncontrol 'user mapping' method.
+ *
+ * @return
+ *   An array with information about the requested versioncontrol
+ *   'user mapping' method.
+ */
+function versioncontrol_get_user_mapping_method($method) {
+  ctools_include('plugins');
+  return ctools_get_plugins('versioncontrol', 'user_mapping_methods', $method);
+}
+
+/**
+ * Fetch metadata for all 'user mapping' plugins.
+ *
+ * @return
+ *   An array of arrays with information about all available versionocontrol
+ *   'user mapping' methods.
+ */
+function versioncontrol_get_user_mapping_methods() {
+  ctools_include('plugins');
+  return ctools_get_plugins('versioncontrol', 'user_mapping_methods');
+}
+
+/**
+ * Load the names of all 'user_mapping_methods' for use at forms.
+ */
+function versioncontrol_user_mapping_methods_get_names() {
+  $names = array();
+  foreach (versioncontrol_get_user_mapping_methods() as $name => $plugin) {
+    $names[$name] = $plugin['title'];
+  }
+
+  asort($names);
+  return $names;
+}
