View | Details | Raw Unified | Return to bug 262148
Collapse All | Expand All

(-)b/devel/git-review/Makefile (+1 lines)
Lines 1-5 Link Here
1
PORTNAME=	git-review
1
PORTNAME=	git-review
2
DISTVERSION=	1.28.0
2
DISTVERSION=	1.28.0
3
PORTREVISION=	1
3
CATEGORIES=	devel python
4
CATEGORIES=	devel python
4
MASTER_SITES=	CHEESESHOP
5
MASTER_SITES=	CHEESESHOP
5
6
(-)b/devel/git-review/files/patch-git__review_cmd.py (+32 lines)
Added Link Here
1
--- git_review/cmd.py.orig	2019-04-08 20:07:09 UTC
2
+++ git_review/cmd.py
3
@@ -851,10 +851,25 @@ def rebase_changes(branch, remote, interactive=True):
4
                   "re-run with the '-R' option enabled." % (branch, remote))
5
         sys.exit(1)
6
 
7
-    if interactive:
8
-        cmd = "git rebase -p -i %s" % remote_branch
9
-    else:
10
-        cmd = "git rebase -p %s" % remote_branch
11
+    # Determine git version to set rebase flags below.
12
+    output = run_command("git version")
13
+    rebase_flag = "--rebase-merges"
14
+    if "git version" in output:
15
+        try:
16
+            v = output.rsplit(None, 1)[1]
17
+            gitv = tuple(map(int, v.split('.')[:3]))
18
+            if gitv < (2, 18, 0):
19
+                rebase_flag = "--preserve-merges"
20
+        except Exception:
21
+            # We tried to determine the version and failed. Use current git
22
+            # flag as fallback.
23
+            warn("Could not determine git version. "
24
+                 "Using modern git rebase flags.")
25
+
26
+    interactive_flag = interactive and '-i' or ''
27
+
28
+    cmd = "git rebase %s %s %s" % \
29
+        (rebase_flag, interactive_flag, remote_branch)
30
 
31
     (status, output) = run_command_status(cmd, GIT_EDITOR='true')
32
     if status != 0:
(-)b/devel/git-review/files/patch-git__review_tests_test__git__review.py (-1 / +59 lines)
Added Link Here
0
- 
1
--- git_review/tests/test_git_review.py.orig	2019-04-08 20:07:09 UTC
2
+++ git_review/tests/test_git_review.py
3
@@ -243,9 +243,11 @@ class GitReviewTestCase(tests.BaseGitReviewTestCase):
4
                             'create conflict with master')
5
 
6
         exc = self.assertRaises(Exception, self._run_git_review)
7
-        self.assertIn(
8
-            "Errors running git rebase -p -i remotes/%s/master" % self._remote,
9
-            exc.args[0])
10
+        rebased = ("Errors running git rebase --rebase-merges "
11
+                   "-i remotes/%s/master" % self._remote in exc.args[0] or
12
+                   "Errors running git rebase --preserve-merges "
13
+                   "-i remotes/%s/master" % self._remote in exc.args[0])
14
+        self.assertTrue(rebased)
15
         self.assertIn("It is likely that your change has a merge conflict.",
16
                       exc.args[0])
17
 
18
@@ -261,9 +263,11 @@ class GitReviewTestCase(tests.BaseGitReviewTestCase):
19
                             self._dir('test', 'new_test_file.txt'))
20
 
21
         review_res = self._run_git_review('-v')
22
-        self.assertIn(
23
-            "Running: git rebase -p -i remotes/%s/master" % self._remote,
24
-            review_res)
25
+        rebased = ("Running: git rebase --rebase-merges "
26
+                   "-i remotes/%s/master" % self._remote in review_res or
27
+                   "Running: git rebase --preserve-merges "
28
+                   "-i remotes/%s/master" % self._remote in review_res)
29
+        self.assertTrue(rebased)
30
         self.assertEqual(self._run_git('rev-parse', 'HEAD^1'), head_1)
31
 
32
     def test_uploads_with_nondefault_rebase(self):
33
@@ -303,8 +307,10 @@ class GitReviewTestCase(tests.BaseGitReviewTestCase):
34
 
35
         review_res = self._run_git_review('-v')
36
         # no rebase needed; if it breaks it would try to rebase to master
37
-        self.assertNotIn("Running: git rebase -p -i remotes/origin/master",
38
-                         review_res)
39
+        self.assertNotIn("Running: git rebase --rebase-merges "
40
+                         "-i remotes/origin/master", review_res)
41
+        self.assertNotIn("Running: git rebase --preserve-merges "
42
+                         "-i remotes/origin/master", review_res)
43
         # Don't need to query gerrit for the branch as the second half
44
         # of this test will work only if the branch was correctly
45
         # stored in gerrit
46
@@ -321,8 +327,11 @@ class GitReviewTestCase(tests.BaseGitReviewTestCase):
47
         self.assertEqual(change_id, new_change_id)
48
         review_res = self._run_git_review('-v')
49
         # caused the right thing to happen
50
-        self.assertIn("Running: git rebase -p -i remotes/origin/maint",
51
-                      review_res)
52
+        rebased = ("Running: git rebase --rebase-merges "
53
+                   "-i remotes/origin/maint" in review_res or
54
+                   "Running: git rebase --preserve-merges "
55
+                   "-i remotes/origin/maint" in review_res)
56
+        self.assertTrue(rebased)
57
 
58
         # track different branch than expected in changeset
59
         branch = self._run_git('rev-parse', '--abbrev-ref', 'HEAD')

Return to bug 262148