Make git cl upload correctly track upstream refs when uploading to Gerrit
NOPRESUBMIT because it's broke on CQ, Cf. https://codereview.chromium.org/1124803002
BUG=478260
NOPRESUBMIT=true
Review URL: https://codereview.chromium.org/1110293002
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@295124 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/git_cl.py b/git_cl.py
index b94be71..1f78545 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -1702,9 +1702,10 @@
# We assume the remote called "origin" is the one we want.
# It is probably not worthwhile to support different workflows.
gerrit_remote = 'origin'
- branch = 'master'
- if options.target_branch:
- branch = options.target_branch
+
+ remote, remote_branch = cl.GetRemoteBranch()
+ branch = GetTargetRef(remote, remote_branch, options.target_branch,
+ pending_prefix='')
change_desc = ChangeDescription(
options.message or CreateDescriptionFromLog(args))
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py
index f633581..bb963c7 100755
--- a/tests/git_cl_test.py
+++ b/tests/git_cl_test.py
@@ -581,7 +581,8 @@
]
@staticmethod
- def _gerrit_upload_calls(description, reviewers, squash):
+ def _gerrit_upload_calls(description, reviewers, squash,
+ expected_upstream_ref='origin/refs/heads/master'):
calls = [
((['git', 'log', '--pretty=format:%s\n\n%b',
'fake_ancestor_sha..HEAD'],),
@@ -620,7 +621,8 @@
ref_to_push = 'HEAD'
calls += [
- ((['git', 'rev-list', 'origin/master..' + ref_to_push],), ''),
+ ((['git', 'rev-list',
+ expected_upstream_ref + '..' + ref_to_push],), ''),
((['git', 'config', 'rietveld.cc'],), '')
]
receive_pack = '--receive-pack=git receive-pack '
@@ -632,7 +634,8 @@
receive_pack += ''
calls += [
((['git',
- 'push', receive_pack, 'origin', ref_to_push + ':refs/for/master'],),
+ 'push', receive_pack, 'origin',
+ ref_to_push + ':refs/for/refs/heads/master'],),
'')
]
if squash:
@@ -650,10 +653,13 @@
upload_args,
description,
reviewers,
- squash=False):
+ squash=False,
+ expected_upstream_ref='origin/refs/heads/master'):
"""Generic gerrit upload test framework."""
self.calls = self._gerrit_base_calls()
- self.calls += self._gerrit_upload_calls(description, reviewers, squash)
+ self.calls += self._gerrit_upload_calls(
+ description, reviewers, squash,
+ expected_upstream_ref=expected_upstream_ref)
git_cl.main(['upload'] + upload_args)
def test_gerrit_upload_without_change_id(self):
@@ -686,7 +692,8 @@
['--squash'],
'desc\n\nBUG=\nChange-Id:123456789\n',
[],
- squash=True)
+ squash=True,
+ expected_upstream_ref='origin/master')
def test_config_gerrit_download_hook(self):
self.mock(git_cl, 'FindCodereviewSettingsFile', CodereviewSettingsFileMock)