Gerrit git cl upload: --squash is now default.
You can override it for all devs of repo by adding line to codereview.settings:
GERRIT_SQUASH_UPLOADS: (True|False)
And even with that, individual devs can overide it for themselves with:
git config [--global] --bool gerrit.override-squash-uploads (true|false)
BUG=611892
Review-Url: https://codereview.chromium.org/2072363002
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py
index b0048a1..53fdacb 100755
--- a/tests/git_cl_test.py
+++ b/tests/git_cl_test.py
@@ -757,15 +757,27 @@
@classmethod
def _gerrit_upload_calls(cls, description, reviewers, squash,
+ squash_mode='default',
expected_upstream_ref='origin/refs/heads/master',
ref_suffix='', notify=False,
post_amend_description=None, issue=None):
if post_amend_description is None:
post_amend_description = description
+ calls = []
- calls = [
- ((['git', 'config', '--bool', 'gerrit.squash-uploads'],), 'false'),
- ]
+ if squash_mode == 'default':
+ calls.extend([
+ ((['git', 'config', '--bool', 'gerrit.override-squash-uploads'],), ''),
+ ((['git', 'config', '--bool', 'gerrit.squash-uploads'],), ''),
+ ])
+ elif squash_mode in ('override_squash', 'override_nosquash'):
+ calls.extend([
+ ((['git', 'config', '--bool', 'gerrit.override-squash-uploads'],),
+ 'true' if squash_mode == 'override_squash' else 'false'),
+ ])
+ else:
+ assert squash_mode in ('squash', 'nosquash')
+
# If issue is given, then description is fetched from Gerrit instead.
if issue is None:
if squash:
@@ -867,22 +879,36 @@
upload_args,
description,
reviewers=None,
- squash=False,
+ squash=True,
+ squash_mode=None,
expected_upstream_ref='origin/refs/heads/master',
ref_suffix='',
notify=False,
post_amend_description=None,
issue=None):
"""Generic gerrit upload test framework."""
+ if squash_mode is None:
+ if '--no-squash' in upload_args:
+ squash_mode = 'nosquash'
+ elif '--squash' in upload_args:
+ squash_mode = 'squash'
+ else:
+ squash_mode = 'default'
+
reviewers = reviewers or []
self.mock(git_cl.sys, 'stdout', StringIO.StringIO())
self.mock(git_cl.gerrit_util, 'CookiesAuthenticator',
CookiesAuthenticatorMockFactory(same_cookie='same_cred'))
self.mock(git_cl._GerritChangelistImpl, '_GerritCommitMsgHookCheck',
lambda _, offer_removal: None)
+ self.mock(git_cl.gclient_utils, 'RunEditor',
+ lambda *_, **__: self._mocked_call(['RunEditor']))
+ self.mock(git_cl, 'DownloadGerritHook', self._mocked_call)
+
self.calls = self._gerrit_base_calls(issue=issue)
self.calls += self._gerrit_upload_calls(
description, reviewers, squash,
+ squash_mode=squash_mode,
expected_upstream_ref=expected_upstream_ref,
ref_suffix=ref_suffix, notify=notify,
post_amend_description=post_amend_description,
@@ -892,23 +918,37 @@
git_cl.main(['upload'] + upload_args)
def test_gerrit_upload_without_change_id(self):
+ self._run_gerrit_upload_test(
+ ['--no-squash'],
+ 'desc\n\nBUG=\n',
+ [],
+ squash=False,
+ post_amend_description='desc\n\nBUG=\n\nChange-Id: Ixxx')
+
+ def test_gerrit_upload_without_change_id_override_nosquash(self):
self.mock(git_cl, 'DownloadGerritHook', self._mocked_call)
self._run_gerrit_upload_test(
[],
'desc\n\nBUG=\n',
[],
+ squash=False,
+ squash_mode='override_nosquash',
post_amend_description='desc\n\nBUG=\n\nChange-Id: Ixxx')
def test_gerrit_no_reviewer(self):
self._run_gerrit_upload_test(
[],
'desc\n\nBUG=\n\nChange-Id: I123456789\n',
- [])
+ [],
+ squash=False,
+ squash_mode='override_nosquash')
def test_gerrit_patch_title(self):
self._run_gerrit_upload_test(
['-t', 'Don\'t put under_scores as they become spaces'],
'desc\n\nBUG=\n\nChange-Id: I123456789',
+ squash=False,
+ squash_mode='override_nosquash',
ref_suffix='%m=Don\'t_put_under_scores_as_they_become_spaces')
def test_gerrit_reviewers_cmd_line(self):
@@ -916,6 +956,8 @@
['-r', 'foo@example.com', '--send-mail'],
'desc\n\nBUG=\n\nChange-Id: I123456789',
['foo@example.com'],
+ squash=False,
+ squash_mode='override_nosquash',
notify=True)
def test_gerrit_reviewer_multiple(self):
@@ -923,14 +965,24 @@
[],
'desc\nTBR=reviewer@example.com\nBUG=\nR=another@example.com\n\n'
'Change-Id: 123456789\n',
- ['reviewer@example.com', 'another@example.com'])
+ ['reviewer@example.com', 'another@example.com'],
+ squash=False,
+ squash_mode='override_nosquash')
+
+ def test_gerrit_upload_squash_first_is_default(self):
+ # Mock Gerrit CL description to indicate the first upload.
+ self.mock(git_cl.Changelist, 'GetDescription',
+ lambda *_: None)
+ self._run_gerrit_upload_test(
+ [],
+ 'desc\nBUG=\n\nChange-Id: 123456789',
+ [],
+ expected_upstream_ref='origin/master')
def test_gerrit_upload_squash_first(self):
# Mock Gerrit CL description to indicate the first upload.
self.mock(git_cl.Changelist, 'GetDescription',
lambda *_: None)
- self.mock(git_cl.gclient_utils, 'RunEditor',
- lambda *_, **__: self._mocked_call(['RunEditor']))
self._run_gerrit_upload_test(
['--squash'],
'desc\nBUG=\n\nChange-Id: 123456789',