diff --git includes/VersioncontrolRepository.php includes/VersioncontrolRepository.php
index 71e0505..6d9a9fc 100644
--- includes/VersioncontrolRepository.php
+++ includes/VersioncontrolRepository.php
@@ -63,9 +63,13 @@ abstract class VersioncontrolRepository implements VersioncontrolEntityInterface
   public $updated = 0;
 
   /**
-   * Indicates if the repository is being updated now.
+   * Repository lock. Repositories are locked when running a parse job to ensure
+   * duplicate data does not enter the database.
    *
-   * @var    integer
+   * Zero indicates an unlocked repository; any nonzero is a timestamp
+   * the time of the last lock.
+   *
+   * @var integer
    */
   public $locked = 0;
 
@@ -126,6 +130,16 @@ abstract class VersioncontrolRepository implements VersioncontrolEntityInterface
   }
 
   /**
+   * Convenience method to set the repository lock to a specific value.
+   */
+  public function updateLock($timestamp = NULL) {
+    if (is_null($timestamp)) {
+      $timestamp = time();
+    }
+    $this->locked = $timestamp;
+  }
+
+  /**
    * Pseudo-constructor method; call this method with an associative array or
    * stdClass object containing properties to be assigned to this object.
    *
diff --git includes/views/handlers/versioncontrol_handler_field_repository_manual_fetch.inc includes/views/handlers/versioncontrol_handler_field_repository_manual_fetch.inc
index d582624..0f61497 100644
--- includes/views/handlers/versioncontrol_handler_field_repository_manual_fetch.inc
+++ includes/views/handlers/versioncontrol_handler_field_repository_manual_fetch.inc
@@ -19,8 +19,8 @@ class versioncontrol_handler_field_repository_manual_fetch extends views_handler
   }
 
   function render($values) {
-    $is_locked = $values->{$this->locked_alias};
-    if (empty($is_locked)) {
+    $locked = $values->{$this->locked_alias};
+    if ($locked == 0) {
       $link = array(
         'title' => t('Fetch logs'),
         'href' => 'admin/content/versioncontrol-repositories/fetch/' . $values->{$this->repo_alias},
@@ -33,8 +33,7 @@ class versioncontrol_handler_field_repository_manual_fetch extends views_handler
         'href' => 'admin/content/versioncontrol-repositories/clearlock/' . $values->{$this->repo_alias},
       );
       $output = theme('links', array($link));
-      return  t('Repo is locked.') . "($output)";
-
+      return  t('Repo is locked since @date.', array('@date' => format_date($locked, 'small'))) . "($output)";
     }
   }
 }
diff --git versioncontrol.admin.inc versioncontrol.admin.inc
index 2fb5b1e..1f06108 100644
--- versioncontrol.admin.inc
+++ versioncontrol.admin.inc
@@ -596,7 +596,7 @@ function versioncontrol_admin_repository_clearlock_confirm_submit($form, &$form_
   $backend = versioncontrol_get_backends($form_state['backend']);
   $repository = $backend->loadEntity('repo', array($form_state['repo_id']));
 
-  $repository->locked = FALSE;
+  $repository->locked = 0;
   $repository->update();
   $form_state['redirect'] = 'admin/content/versioncontrol-repositories';
 }
diff --git versioncontrol.install versioncontrol.install
index 9d07fc4..9a4abba 100644
--- versioncontrol.install
+++ versioncontrol.install
@@ -344,7 +344,7 @@ function versioncontrol_schema() {
         'default' => 1
       ),
       'locked' => array(
-        'description' => 'Dead-simple semaphore - boolean indicating whether the repository is unlocked (0) or locked (1). Locking is typically used when doing log fetches.',
+        'description' => 'Timestamp-based semaphore. If 0, repository is unlocked. Otherwise, a UNIX epoch timestamp (using the server-default tz) indicating when this repository was last locked.',
         'type' => 'int',
         'not null' => TRUE,
         'default' => 0,
@@ -1188,3 +1188,13 @@ function versioncontrol_update_6314() {
 
   return $ret;
 }
+
+/**
+ * {versioncontrol_repositories}.locked is now a proper timestamp, so update
+ * all locked repos with the timestamp of this update (best we can do).
+ */
+function versioncontrol_update_6315() {
+  $ret = array();
+  db_query('UPDATE {versioncontrol_repositories} SET locked = %d WHERE locked = 1', time());
+  return $ret;
+}
