| Index: git_cl.py
|
| diff --git a/git_cl.py b/git_cl.py
|
| index 8407eb001a2efcfb962835aeaf35c0fe5697adda..52c091f3697543e99c50e22c843936d9ad7d237f 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:
|
| + # Default is squash now (http://crbug.com/611892#c23).
|
| + self.squash_gerrit_uploads = not (
|
| + RunGit(['config', '--bool', 'gerrit.squash-uploads'],
|
| + error_ok=True).strip() == 'false')
|
| 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,12 @@ 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:
|
| + # Load default for user, repo, squash=true, in this order.
|
| + options.squash = settings.GetSquashGerritUploads()
|
| + 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.
|
|
|