| Index: git_cl.py
|
| diff --git a/git_cl.py b/git_cl.py
|
| index 07c528c36f55f38af2af6d12f03a1f81dcbe0238..c6d283c3c56d6c21b234ab0956548be4ce9406a6 100755
|
| --- a/git_cl.py
|
| +++ b/git_cl.py
|
| @@ -1393,9 +1393,10 @@ class Changelist(object):
|
| author,
|
| upstream=upstream_branch)
|
|
|
| - def UpdateDescription(self, description):
|
| + def UpdateDescription(self, description, force=False):
|
| self.description = description
|
| - return self._codereview_impl.UpdateDescriptionRemote(description)
|
| + return self._codereview_impl.UpdateDescriptionRemote(
|
| + description, force=force)
|
|
|
| def RunHook(self, committing, may_prompt, verbose, change):
|
| """Calls sys.exit() if the hook fails; returns a HookResults otherwise."""
|
| @@ -1603,7 +1604,7 @@ class _ChangelistCodereviewBase(object):
|
| # None is valid return value, otherwise presubmit_support.GerritAccessor.
|
| return None
|
|
|
| - def UpdateDescriptionRemote(self, description):
|
| + def UpdateDescriptionRemote(self, description, force=False):
|
| """Update the description on codereview site."""
|
| raise NotImplementedError()
|
|
|
| @@ -1798,7 +1799,7 @@ class _RietveldChangelistImpl(_ChangelistCodereviewBase):
|
| return 'reply'
|
| return 'waiting'
|
|
|
| - def UpdateDescriptionRemote(self, description):
|
| + def UpdateDescriptionRemote(self, description, force=False):
|
| return self.RpcServer().update_description(
|
| self.GetIssue(), self.description)
|
|
|
| @@ -2294,7 +2295,17 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase):
|
| url = data['revisions'][current_rev]['fetch']['http']['url']
|
| return gerrit_util.GetChangeDescriptionFromGitiles(url, current_rev)
|
|
|
| - def UpdateDescriptionRemote(self, description):
|
| + def UpdateDescriptionRemote(self, description, force=False):
|
| + if gerrit_util.HasPendingChangeEdit(self._GetGerritHost(), self.GetIssue()):
|
| + if not force:
|
| + ask_for_data(
|
| + 'The description cannot be modified while the issue has a pending '
|
| + 'unpublished edit. Either publish the edit in the Gerrit web UI '
|
| + 'or delete it.\n\n'
|
| + 'Press Enter to delete the unpublished edit, Ctrl+C to abort.')
|
| +
|
| + gerrit_util.DeletePendingChangeEdit(self._GetGerritHost(),
|
| + self.GetIssue())
|
| gerrit_util.SetCommitMessage(self._GetGerritHost(), self.GetIssue(),
|
| description)
|
|
|
| @@ -3607,6 +3618,9 @@ def CMDdescription(parser, args):
|
| parser.add_option('-n', '--new-description',
|
| help='New description to set for this issue (- for stdin, '
|
| '+ to load from local commit HEAD)')
|
| + parser.add_option('-f', '--force', action='store_true',
|
| + help='Delete any unpublished Gerrit edits for this issue '
|
| + 'without prompting')
|
|
|
| _add_codereview_select_options(parser)
|
| auth.add_auth_options(parser)
|
| @@ -3655,7 +3669,7 @@ def CMDdescription(parser, args):
|
| description.prompt()
|
|
|
| if cl.GetDescription() != description.description:
|
| - cl.UpdateDescription(description.description)
|
| + cl.UpdateDescription(description.description, force=options.force)
|
| return 0
|
|
|
|
|
|
|