diff --git commitlog/commitlog.module commitlog/commitlog.module
index 63fb167..f73ece4 100644
--- commitlog/commitlog.module
+++ commitlog/commitlog.module
@@ -71,6 +71,31 @@ function commitlog_views_api() {
 }
 
 /**
+ * Implementation of hook_versioncontrol_views_sets().
+ * 
+ */
+function commitlog_versioncontrol_views_sets() {
+  $sets = array();
+
+  $sets['global commit view'] = array(
+    'title' => t('Global commit log'),
+    'description' => t('A log of all commits made in all repositories known to the system. Note that the backend-specific versions of this view will be used only if a single backend is enabled.'),
+    'base view' => 'commitlog_global_commits',
+  );
+  $sets['user commit view'] = array(
+    'title' => t('Per-user commit log'),
+    'description' => t('A log of all commits made by a specific user in all repositories known to the system. As with the global commit view, note that the backend-specific version will only be used if operating in single-backend mode.'),
+    'base view' => 'commitlog_user_commits',
+  );
+  $sets['repository commit view'] = array(
+    'title' => t('Single repository commit log'),
+    'description' => t('A log of all commits made to a single repository.'),
+    'base view' => 'commitlog_repository_commits',
+  );
+  return $sets;
+}
+
+/**
  * Page callback for the 'commitlog' family of menu paths.
  *
  * @param $type
diff --git includes/VersioncontrolBackend.php includes/VersioncontrolBackend.php
index 2e51afe..7f806e6 100644
--- includes/VersioncontrolBackend.php
+++ includes/VersioncontrolBackend.php
@@ -47,7 +47,7 @@ abstract class VersioncontrolBackend {
   /**
    * An array of the default views for use in the Versioncontorl API interfaces.
    */
-  public $views = array();
+  public $defaultViews = array();
 
   /**
    * An array of the update methods available for this backend.
@@ -79,12 +79,7 @@ abstract class VersioncontrolBackend {
       'branch'    => 'VersioncontrolBranch',
       'tag'       => 'VersioncontrolTag',
     );
-    $this->views += array(
-      'repositories' => 'versioncontrol_repositories',
-      'global commit view' => 'versioncontrol_global_commits',
-      'repository commits' => 'versioncontrol_repository_commits',
-      'user commit view' => 'versioncontrol_user_commits',
-    );
+
     $this->update_methods += array(
       0 => t('Automatic log retrieval.'),
       1 => t('Use external script to insert data.'),
@@ -182,22 +177,24 @@ abstract class VersioncontrolBackend {
   public function augmentEntitySelectQuery($query, $entity_type) {}
 
   /**
-   * Retrieves the appropriate views module view for this backend.
+   * Given the name of a views set, retrieves the appropriate view name for
+   * this backend.
    *
-   * Versioncontrol allows backends to customize the views used for the admin
-   * interface.  This method gets the appopriate one for this backend.
+   * @see versioncontrol_get_views_sets()
    *
-   * @param $type
-   *   The type of view we are returning (eg. Repositories) 
+   * @param string $set
+   *   The name of the views set we want a view from.
    *
    * @return
-   *   The name of the view to be used.
+   *   The system name of the view to be used.
    */
-  public function getViewName($type) {
-    if (isset($this->views[$type])) {
-      return $this->views[$type];
+  public function getViewName($set) {
+    $set = versioncontrol_get_views_set($set);
+    if (empty($set)) {
+      throw new Exception("Unknown Versioncontrol views set requested, '$set'", E_ERROR);
     }
-    return FALSE;
+
+    return empty($set[$this->type]) ? $set['base'] : $set[$this->type];
   }
 
   /**
diff --git versioncontrol.admin.inc versioncontrol.admin.inc
index 0c3a2ac..f00d358 100644
--- versioncontrol.admin.inc
+++ versioncontrol.admin.inc
@@ -82,6 +82,86 @@ function versioncontrol_admin_settings_submit($form, &$form_state) {
   }
 }
 
+function versioncontrol_admin_views_sets_edit(&$form_state) {
+  $form = array();
+
+  $form['info'] = array(
+    '#type' => 'markup',
+    '#value' => t("This form allows you to manage Version Control API's Views sets. When a user requests a page with Views-driven VCAPI data, VCAPI uses this system to pick a backend-specific view (if appropriate). Backend-specific views always contain richer data than their generic cross-backend counterparts."),
+  );
+
+  $infos = versioncontrol_get_views_sets_info();
+  $sets = versioncontrol_get_views_sets();
+  $backends = versioncontrol_get_backends();
+  $base_options = drupal_map_assoc(array_keys(views_get_all_views()));
+
+  foreach ($infos as $set_name => $info) {
+    $set = $sets[$set_name];
+    // Create a fieldset for each set.
+    $form[$set_name] = array(
+      '#type' => 'fieldset',
+      '#title' => $info['title'],
+      '#description' => $info['description'],
+      '#collapsible' => TRUE,
+      '#collapsed' => TRUE,
+    );
+
+    $form[$set_name]['base'] = array(
+      '#type' => 'textfield',
+      '#disabled' => TRUE,
+      '#title' => t('Base view'),
+      '#description' => t('The base view is a fallback. It is only used if no other view is appropriate.'),
+      '#default_value' => $set['base'],
+    );
+
+    foreach ($backends as $vcs => $backend) {
+      $has_value = empty($set[$vcs]);
+      $default_value = empty($set[$vcs]) ? $set['base'] : $set[$vcs];
+
+      // $remove = empty($backend->defaultViews[$set_name]) ? $set['base'] : $backend->defaultViews[$set_name];
+
+      if (empty($base_options[$default_value])) {
+        drupal_set_message("Unknown view '$default_value' requested by backend '$vcs' for set '$set_name'. Attempting to use this set will cause nasty errors.", 'error');
+      }
+
+      $form[$set_name][$vcs] = array(
+        '#type' => 'fieldset',
+        '#title' => $backend->name,
+        '#collapsible' => FALSE,
+        '#collapsed' => FALSE,
+      );
+
+      $form[$set_name][$vcs]['use default'] = array(
+        '#type' => 'checkbox',
+        '#title' => t('Use the default view for this backend.'),
+        '#description' => t("The view <em>'!view_name'</em> has been specified by the backend as the default view for this set.", array('!view_name' => $default_value)),
+        '#default_value' => TRUE,
+      );
+
+      $form[$set_name][$vcs]['override'] = array(
+        '#type' => 'select',
+        '#title' => t('Select a view'),
+        '#options' => $base_options,
+        '#default_value' => $default_value,
+      );
+    }
+  }
+
+  $form['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Save views sets'),
+  );
+
+  return $form;
+}
+
+function versioncontrol_admin_views_sets_edit_validate($form, &$form_state) {
+
+}
+
+function versioncontrol_admin_views_sets_edit_submit($form, &$form_state) {
+
+}
 
 /**
  * Form callback for "admin/content/versioncontrol-accounts":
@@ -347,7 +427,7 @@ function versioncontrol_admin_repository_list(&$form_state) {
       '#value' => '<h4>'. $title .'</h4>',
     );
     $form[$vcs . '_repositories'] = array(
-      '#value' => views_embed_view($backend->getViewName('repositories'), 'default', $vcs),
+      '#value' => views_embed_view($backend->getViewName('repositories admin'), 'default', $vcs),
     );
   }
   return $form;
diff --git versioncontrol.install versioncontrol.install
index 7004831..32a87de 100644
--- versioncontrol.install
+++ versioncontrol.install
@@ -511,6 +511,32 @@ function versioncontrol_schema() {
     ),
   );
 
+  $schema['versioncontrol_views_sets'] = array(
+    'description' => 'System names of views to be used for particular views sets, per-backend, as configured in the UI. Settings stored here will override those specified by backends, if any.',
+    'fields' => array(
+      'views_set' => array(
+        'description' => 'The string identifying this view set, as defined in implementations of hook_versioncontrol_views_sets().',
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => TRUE,
+      ),
+      'vcs' => array(
+        'description' => 'Unique string identifier of the backend, e.g. "cvs", "svn" or "git".',
+        'type' => 'varchar',
+        'length' => 8,
+        'not null' => TRUE,
+      ),
+      'view_name' => array(
+        'description' => 'The system name of the view to be used for this set/backend combination.',
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+    ),
+    'primary key' => array('views_set', 'vcs'),
+  );
+
   return $schema;
 }
 
@@ -1091,3 +1117,37 @@ function versioncontrol_update_6309() {
 
   return $ret;
 }
+
+function versioncontrol_update_6310() {
+  $ret = array();
+
+  $schema = array(
+    'description' => 'System names of views to be used for particular views sets, per-backend, as configured in the UI. Settings stored here will override those specified by backends, if any.',
+    'fields' => array(
+      'views_set' => array(
+        'description' => 'The string identifying this view set, as defined in implementations of hook_versioncontrol_views_sets().',
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => TRUE,
+      ),
+      'vcs' => array(
+        'description' => 'Unique string identifier of the backend, e.g. "cvs", "svn" or "git".',
+        'type' => 'varchar',
+        'length' => 8,
+        'not null' => TRUE,
+      ),
+      'view_name' => array(
+        'description' => 'The system name of the view to be used for this set/backend combination.',
+        'type' => 'varchar',
+        'length' => 64,
+        'not null' => TRUE,
+        'default' => '',
+      ),
+    ),
+    'primary key' => array('views_set', 'vcs'),
+  );
+
+  db_create_table($ret, 'versioncontrol_views_sets', $schema);
+  
+  return $ret;
+}
\ No newline at end of file
diff --git versioncontrol.module versioncontrol.module
index cb261f0..3edf931 100644
--- versioncontrol.module
+++ versioncontrol.module
@@ -180,13 +180,19 @@ function versioncontrol_menu() {
     'page arguments' => array('versioncontrol_admin_settings'),
     'type' => MENU_NORMAL_ITEM,
   ) + $admin;
-  
+
   $items['admin/settings/versioncontrol-settings/general'] = array(
     'title' => 'General',
     'type' => MENU_DEFAULT_LOCAL_TASK,
-    'weight' => -1,
   );
 
+  $items['admin/settings/versioncontrol-settings/views-sets'] = array(
+    'title' => 'Views sets',
+    'description' => 'Configure the sets of Views used by Version Control API and related modules.',
+    'page arguments' => array('versioncontrol_admin_views_sets_edit'),
+    'type' => MENU_LOCAL_TASK,
+  ) + $admin;
+
   $items['admin/content/versioncontrol-repositories'] = array(
     'title' => 'VCS Repositories',
     'description' => 'Define and manage the Version Control repositories known to your site.',
@@ -1036,6 +1042,84 @@ function versioncontrol_user_autocomplete($repo_id, $string = '') {
   drupal_json($matches);
 }
 
+function versioncontrol_get_views_sets() {
+  $sets = &ctools_static(__FUNCTION__, array());
+
+  // Only build the set list if it's empty.
+  if (empty($sets)) {
+    // get all the site-specific settings stored in the db
+    $result = db_select('versioncontrol_views_sets', 'base')
+      ->fields('base')
+      ->execute();
+
+    $db_set_data = array();
+    foreach ($result as $row) {
+      if (empty($db_set_data[$row->views_set])) {
+        $db_set_data[$row->views_set] = array();
+      }
+      $db_set_data[$row->views_set][$row->vcs] = $row->view_name;
+    }
+
+    $hook_data = versioncontrol_get_views_sets_info();
+    $backends = versioncontrol_get_backends();
+
+    foreach ($hook_data as $set_name => $set_info) {
+      $sets[$set_name] = array();
+      $set = &$sets[$set_name];
+
+      // Ensure the db has at least an empty array for this set
+      if (empty($db_set_data[$set_name])) {
+        $db_set_data[$set_name] = array();
+      }
+
+      foreach ($backends as $vcs => $backend) {
+        // Attach defaults set by the backends themselves, if they exist.
+        if (!empty($backend->defaultViews[$set_name])) {
+          $set[$vcs] = $backend->defaultViews[$set_name];
+        }
+      }
+
+      // Merge the db values overtop of defaults set by the backends
+      $set = array_merge($set, $db_set_data[$set_name]);
+
+      $set['base'] = $set_info['base view'];
+    }
+  }
+
+  return $sets;
+}
+
+function versioncontrol_get_views_sets_info() {
+  $hook_data = array();
+  foreach (module_implements('versioncontrol_views_sets') as $module) {
+    $function = $module . '_versioncontrol_views_sets';
+    $hook_data = array_merge($hook_data, $function());
+  }
+  return $hook_data;
+}
+
+function versioncontrol_get_views_set($set) {
+  $sets = versioncontrol_get_views_sets();
+  if (!empty($sets[$set])) {
+    return $sets[$set];
+  }
+  return array();
+}
+
+/**
+ * Implementation of hook_versioncontrol_views_sets().
+ *
+ */
+function versioncontrol_versioncontrol_views_sets() {
+  $sets = array();
+  $sets['repositories admin'] = array(
+    'title' => t('Administrative repository listing'),
+    'description' => t('An administrative list of repositories, used in the VCAPI-provided repository management UI at !link', array('!link' => l('repository management UI', 'admin/content/versioncontrol-repositories'))),
+    'base view' => 'versioncontrol_repositories',
+  );
+
+  return $sets;
+}
 
 /**
  * Return preset values for strings that are used in the user interface.
