Index: git_cl.py |
diff --git a/git_cl.py b/git_cl.py |
index 49bed386baa821cfedf4370030bc9cb1b6afb452..34c72b9f432712403c182f33f5a91808f25febe9 100755 |
--- a/git_cl.py |
+++ b/git_cl.py |
@@ -433,6 +433,7 @@ class Settings(object): |
self.viewvc_url = None |
self.updated = False |
self.is_gerrit = None |
+ self.squash_gerrit_uploads = None |
self.git_editor = None |
self.project = None |
self.force_https_commit_url = None |
@@ -598,6 +599,14 @@ class Settings(object): |
self.is_gerrit = self._GetConfig('gerrit.host', error_ok=True) |
return self.is_gerrit |
+ 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') |
+ return self.squash_gerrit_uploads |
+ |
def GetGitEditor(self): |
"""Return the editor specified in the git config, or None if none is.""" |
if self.git_editor is None: |
@@ -1386,6 +1395,10 @@ def LoadCodereviewSettingsFromFile(fileobj): |
if 'GERRIT_HOST' in keyvals: |
RunGit(['config', 'gerrit.host', keyvals['GERRIT_HOST']]) |
+ if 'GERRIT_SQUASH_UPLOADS' in keyvals: |
+ RunGit(['config', 'gerrit.squash-uploads', |
+ keyvals['GERRIT_SQUASH_UPLOADS']]) |
+ |
if 'PUSH_URL_CONFIG' in keyvals and 'ORIGIN_URL_CONFIG' in keyvals: |
#should be of the form |
#PUSH_URL_CONFIG: url.ssh://gitrw.chromium.org.pushinsteadof |
@@ -2353,6 +2366,9 @@ def CMDupload(parser, args): |
'Default: remote branch head, or master') |
parser.add_option('--squash', action='store_true', |
help='Squash multiple commits into one (Gerrit only)') |
+ parser.add_option('--no-squash', action='store_true', |
+ help='Don\'t squash multiple commits into one ' + |
+ '(Gerrit only)') |
parser.add_option('--email', default=None, |
help='email address to use to connect to Rietveld') |
parser.add_option('--tbr-owners', dest='tbr_owners', action='store_true', |
@@ -2436,6 +2452,12 @@ def CMDupload(parser, args): |
print_stats(options.similarity, options.find_copies, args) |
if settings.GetIsGerrit(): |
+ 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) |
+ |
return GerritUpload(options, args, cl, change) |
ret = RietveldUpload(options, args, cl, change) |
if not ret: |