Merge "-F/--force-rebase has no effect if rebase is disabled by config"
This commit is contained in:
@@ -1072,12 +1072,14 @@ def _main():
|
|||||||
help="Regenerate Change-id before submitting")
|
help="Regenerate Change-id before submitting")
|
||||||
parser.add_argument("-r", "--remote", dest="remote",
|
parser.add_argument("-r", "--remote", dest="remote",
|
||||||
help="git remote to use for gerrit")
|
help="git remote to use for gerrit")
|
||||||
parser.add_argument("-R", "--no-rebase", dest="rebase",
|
|
||||||
action="store_false",
|
rebase_group = parser.add_mutually_exclusive_group()
|
||||||
help="Don't rebase changes before submitting.")
|
rebase_group.add_argument("-R", "--no-rebase", dest="rebase",
|
||||||
parser.add_argument("-F", "--force-rebase", dest="force_rebase",
|
action="store_false",
|
||||||
action="store_true",
|
help="Don't rebase changes before submitting.")
|
||||||
help="Force rebase even when not needed.")
|
rebase_group.add_argument("-F", "--force-rebase", dest="force_rebase",
|
||||||
|
action="store_true",
|
||||||
|
help="Force rebase even when not needed.")
|
||||||
|
|
||||||
fetch = parser.add_mutually_exclusive_group()
|
fetch = parser.add_mutually_exclusive_group()
|
||||||
fetch.set_defaults(download=False, compare=False, cherrypickcommit=False,
|
fetch.set_defaults(download=False, compare=False, cherrypickcommit=False,
|
||||||
@@ -1214,7 +1216,7 @@ def _main():
|
|||||||
finish_branch(branch)
|
finish_branch(branch)
|
||||||
return
|
return
|
||||||
|
|
||||||
if options.rebase:
|
if options.rebase or options.force_rebase:
|
||||||
if not rebase_changes(branch, remote):
|
if not rebase_changes(branch, remote):
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
if not options.force_rebase and not undo_rebase():
|
if not options.force_rebase and not undo_rebase():
|
||||||
|
|||||||
@@ -260,6 +260,33 @@ class GitReviewTestCase(tests.BaseGitReviewTestCase):
|
|||||||
self.assertNotIn('project: change3, abandoned', result)
|
self.assertNotIn('project: change3, abandoned', result)
|
||||||
self.assertNotIn('project2:', result)
|
self.assertNotIn('project2:', result)
|
||||||
|
|
||||||
|
def _test_git_review_F(self, rebase):
|
||||||
|
self._run_git_review('-s')
|
||||||
|
|
||||||
|
# Populate repo
|
||||||
|
self._simple_change('create file', 'test commit message')
|
||||||
|
change1 = self._run_git('rev-parse', 'HEAD')
|
||||||
|
self._run_git_review()
|
||||||
|
self._run_gerrit_cli('review', change1, '--code-review=+2', '--submit')
|
||||||
|
self._run_git('reset', '--hard', 'HEAD^')
|
||||||
|
|
||||||
|
# Review with force_rebase
|
||||||
|
self._run_git('config', 'gitreview.rebase', rebase)
|
||||||
|
self._simple_change('create file2', 'test commit message 2',
|
||||||
|
self._dir('test', 'test_file2.txt'))
|
||||||
|
self._run_git_review('-F')
|
||||||
|
head_1 = self._run_git('rev-parse', 'HEAD^')
|
||||||
|
self.assertEqual(change1, head_1)
|
||||||
|
|
||||||
|
def test_git_review_F(self):
|
||||||
|
self._test_git_review_F('1')
|
||||||
|
|
||||||
|
def test_git_review_F_norebase(self):
|
||||||
|
self._test_git_review_F('0')
|
||||||
|
|
||||||
|
def test_git_review_F_R(self):
|
||||||
|
self.assertRaises(Exception, self._run_git_review, '-F', '-R')
|
||||||
|
|
||||||
|
|
||||||
class HttpGitReviewTestCase(tests.HttpMixin, GitReviewTestCase):
|
class HttpGitReviewTestCase(tests.HttpMixin, GitReviewTestCase):
|
||||||
"""Class for the git-review tests over HTTP(S)."""
|
"""Class for the git-review tests over HTTP(S)."""
|
||||||
|
|||||||
Reference in New Issue
Block a user