diff --git a/apply_issue.py b/apply_issue.py
index c8cbfec..b4ad894 100755
--- a/apply_issue.py
+++ b/apply_issue.py
@@ -72,7 +72,17 @@
   parser.add_option('--revision-mapping', default='{}',
                     help='When running gclient, annotate the got_revisions '
                          'using the revision-mapping.')
+  parser.add_option('-f', '--force', action='store_true',
+                    help='Really run apply_issue, even if .update.flag '
+                         'is detected.')
+  parser.add_option('-b', '--base_ref', help='Base git ref to patch on top of, '
+                    'used for verification.')
   options, args = parser.parse_args()
+  if (os.path.isfile(os.path.join(os.getcwd(), 'update.flag'))
+      and not options.force):
+    print 'update.flag file found: bot_update has run and checkout is already '
+    print 'in a consistent state. No actions will be performed in this step.'
+    return 0
   logging.basicConfig(
       format='%(levelname)5s %(module)11s(%(lineno)4d): %(message)s',
       level=[logging.WARNING, logging.INFO, logging.DEBUG][
@@ -151,7 +161,8 @@
   if scm_type == 'svn':
     scm_obj = checkout.SvnCheckout(full_dir, None, None, None, None)
   elif scm_type == 'git':
-    scm_obj = checkout.GitCheckout(full_dir, None, None, None, None)
+    scm_obj = checkout.GitCheckout(full_dir, None, None, None, None,
+                                   base_ref=options.base_ref)
   elif scm_type == None:
     scm_obj = checkout.RawCheckout(full_dir, None, None)
   else:
diff --git a/checkout.py b/checkout.py
index 450b379..cc57008 100644
--- a/checkout.py
+++ b/checkout.py
@@ -553,8 +553,9 @@
 class GitCheckout(CheckoutBase):
   """Manages a git checkout."""
   def __init__(self, root_dir, project_name, remote_branch, git_url,
-      commit_user, post_processors=None):
+      commit_user, post_processors=None, base_ref=None):
     super(GitCheckout, self).__init__(root_dir, project_name, post_processors)
+    self.base_ref = base_ref
     self.git_url = git_url
     self.commit_user = commit_user
     self.remote_branch = remote_branch
@@ -710,9 +711,13 @@
     if verbose:
       cmd.append('--verbose')
     self._check_call_git(cmd)
+    if self.base_ref:
+      base_ref = self.base_ref
+    else:
+      base_ref = '%s/%s' % (self.remote,
+                            self.remote_branch or self.master_branch)
     found_files = self._check_output_git(
-        ['diff', '%s/%s' % (self.remote,
-                            self.remote_branch or self.master_branch),
+        ['diff', base_ref,
          '--name-only']).splitlines(False)
     assert sorted(patches.filenames) == sorted(found_files), (
         sorted(patches.filenames), sorted(found_files))
