Apply Issue changes for disabling checkout when bot update ran.
This add --force to ignore the flag file.
This also passes --base_ref so we can specify which ref we're basing off of so that it does not incorrectly assert that it is basing off origin/master
BUG=339171
Review URL: https://codereview.chromium.org/171763003
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@252464 0039d316-1c4b-4281-b951-d872f2087c98
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))