From 609f395e7cc8c1dd0820729521e44969e3286398 Mon Sep 17 00:00:00 2001 From: "luqui@chromium.org" Date: Mon, 4 May 2015 22:47:04 +0000 Subject: [PATCH] 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 --- git_cl.py | 7 ++++--- tests/git_cl_test.py | 19 +++++++++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/git_cl.py b/git_cl.py index b94be71c8..1f7854551 100755 --- a/git_cl.py +++ b/git_cl.py @@ -1702,9 +1702,10 @@ def GerritUpload(options, args, cl, change): # 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 f63358116..bb963c76a 100755 --- a/tests/git_cl_test.py +++ b/tests/git_cl_test.py @@ -581,7 +581,8 @@ class TestGitCl(TestCase): ] @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 @@ class TestGitCl(TestCase): 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 @@ class TestGitCl(TestCase): 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 @@ class TestGitCl(TestCase): 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 @@ class TestGitCl(TestCase): ['--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)