| Index: git_cl.py
|
| diff --git a/git_cl.py b/git_cl.py
|
| index 8407eb001a2efcfb962835aeaf35c0fe5697adda..c236a8aed74f98741037551e16445acef863989c 100755
|
| --- a/git_cl.py
|
| +++ b/git_cl.py
|
| @@ -770,11 +770,28 @@ class Settings(object):
|
| def GetSquashGerritUploads(self):
|
| """Return true if uploads to Gerrit should be squashed by default."""
|
| if self.squash_gerrit_uploads is None:
|
| - self.squash_gerrit_uploads = (
|
| - RunGit(['config', '--bool', 'gerrit.squash-uploads'],
|
| - error_ok=True).strip() == 'true')
|
| + self.squash_gerrit_uploads = self.GetSquashGerritUploadsOverride()
|
| + if self.squash_gerrit_uploads is None:
|
| + # TODO(tandrii): switch this from ==true to not ==false.
|
| + self.squash_gerrit_uploads = (
|
| + RunGit(['config', '--bool', 'gerrit.squash-uploads'],
|
| + error_ok=True).strip() == 'true')
|
| return self.squash_gerrit_uploads
|
|
|
| + def GetSquashGerritUploadsOverride(self):
|
| + """Return True or False if codereview.settings should be overridden.
|
| +
|
| + Returns None if no override has been defined.
|
| + """
|
| + # See also http://crbug.com/611892#c23
|
| + result = RunGit(['config', '--bool', 'gerrit.override-squash-uploads'],
|
| + error_ok=True).strip()
|
| + if result == 'true':
|
| + return True
|
| + if result == 'false':
|
| + return False
|
| + return None
|
| +
|
| def GetGerritSkipEnsureAuthenticated(self):
|
| """Return True if EnsureAuthenticated should not be done for Gerrit
|
| uploads."""
|
| @@ -2338,8 +2355,22 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase):
|
| """Upload the current branch to Gerrit."""
|
| if options.squash and options.no_squash:
|
| DieWithError('Can only use one of --squash or --no-squash')
|
| - options.squash = ((settings.GetSquashGerritUploads() or options.squash) and
|
| - not options.no_squash)
|
| +
|
| + if not options.squash and not options.no_squash:
|
| + options.squash = settings.GetSquashGerritUploads()
|
| + # TODO(tandrii): remove this by June 20.
|
| + if (settings.GetSquashGerritUploadsOverride() is None and
|
| + not options.squash):
|
| + print('\n\nYou are using git cl upload in --no-squash mode '
|
| + 'by default.\n'
|
| + 'Chrome infrastructure wants to make --squash the default.\n'
|
| + 'To ensure that --no-squash is still the default for YOU do:\n'
|
| + ' git config --bool gerrit.override-squash-uploads false\n'
|
| + 'See https://goo.gl/dnK2gV (use chromium.org account!) and '
|
| + 'let us know what you think. Thanks!\n'
|
| + 'BUG: http://crbug.com/611892\n\n')
|
| + elif options.no_squash:
|
| + options.squash = False
|
|
|
| # We assume the remote called "origin" is the one we want.
|
| # It is probably not worthwhile to support different workflows.
|
|
|