Added message when upstream branch is gone.
BUG=496892
Review URL: https://codereview.chromium.org/1156223008
git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@295634 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/git_cl.py b/git_cl.py
index 7c3f530..60fd1ce 100755
--- a/git_cl.py
+++ b/git_cl.py
@@ -139,6 +139,13 @@
LooseVersion(version[len(prefix):]) >= LooseVersion(min_version))
+def BranchExists(branch):
+ """Return True if specified branch exists."""
+ code, _ = RunGitWithCode(['rev-parse', '--verify', branch],
+ suppress_stderr=True)
+ return not code
+
+
def ask_for_data(prompt):
try:
return raw_input(prompt)
@@ -719,8 +726,12 @@
return remote, upstream_branch
def GetCommonAncestorWithUpstream(self):
+ upstream_branch = self.GetUpstreamBranch()
+ if not BranchExists(upstream_branch):
+ DieWithError('The upstream for the current branch (%s) does not exist '
+ 'anymore.\nPlease fix it and try again.' % self.GetBranch())
return git_common.get_or_create_merge_base(self.GetBranch(),
- self.GetUpstreamBranch())
+ upstream_branch)
def GetUpstreamBranch(self):
if self.upstream_branch is None:
diff --git a/tests/git_cl_test.py b/tests/git_cl_test.py
index cb87bdb..b19e45c 100755
--- a/tests/git_cl_test.py
+++ b/tests/git_cl_test.py
@@ -86,6 +86,7 @@
self.mock(git_common, 'get_or_create_merge_base',
lambda *a: (
self._mocked_call(['get_or_create_merge_base']+list(a))))
+ self.mock(git_cl, 'BranchExists', lambda _: True)
self.mock(git_cl, 'FindCodereviewSettingsFile', lambda: '')
self.mock(git_cl, 'ask_for_data', self._mocked_call)
self.mock(git_cl.breakpad, 'post', self._mocked_call)