[PATCH] dim: Add dim rebase command

Sean Paul sean at poorly.run
Tue Aug 28 15:03:23 UTC 2018


From: Sean Paul <seanpaul at chromium.org>

Since -fixes and -fixes-next (to a lesser extent) are rebasing trees in
drm-misc, add a dim rebase command that sanity checks the upstream and
adds SoB for the committer.

Cc: Boris Brezillon <boris.brezillon at bootlin.com>
Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
Signed-off-by: Sean Paul <seanpaul at chromium.org>
---
 dim     | 40 ++++++++++++++++++++++++++++++++++++----
 dim.rst |  8 ++++++++
 2 files changed, 44 insertions(+), 4 deletions(-)

diff --git a/dim b/dim
index 5040d6b046b2..b7060216fbe5 100755
--- a/dim
+++ b/dim
@@ -1014,12 +1014,12 @@ function dim_apply_pull
 	return $rv
 }
 
-function dim_backmerge
+function validate_upstream_branch
 {
-	local branch upstream patch_file
+	local branch upstream
 
-	branch=${1:?$usage}
-	upstream=${2:?$usage}
+	branch=${1}
+	upstream=${2}
 
 	cd $DIM_PREFIX/drm-tip
 
@@ -1041,6 +1041,16 @@ function dim_backmerge
 
 	assert_branch $branch
 	assert_repo_clean
+}
+
+function dim_backmerge
+{
+	local branch upstream patch_file
+
+	branch=${1:?$usage}
+	upstream=${2:?$usage}
+
+	validate_upstream_branch $branch $upstream
 
 	git merge --rerere-autoupdate --no-commit $upstream >& /dev/null || true
 
@@ -1072,6 +1082,28 @@ function dim_backmerge
 	git commit -s
 }
 
+function dim_rebase
+{
+	local branch upstream patch_file
+
+	branch=${1:?$usage}
+	upstream=${2:?$usage}
+
+	validate_upstream_branch $branch $upstream
+
+	git rebase --signoff $upstream >& /dev/null || true
+	if git diff | grep -q '\(<<<<<<<\|=======\|>>>>>>>\||||||||\)' ; then
+		echoerr "Conflicts found while rebasing $branch onto $upstream."
+		echoerr "Please proceed with extreme caution."
+		echoerr "Resolve the conflict and test it.  Once the conflict "
+		echoerr "is resolved, commit it with: "
+		echoerr "   git commit -a"
+		echoerr "And continue the rebase with: "
+		echoerr "   git rebase --continue"
+		exit 1
+	fi
+}
+
 function dim_add_link
 {
 	local branch file message_id
diff --git a/dim.rst b/dim.rst
index 6d7528ce497f..4137d1be6f52 100644
--- a/dim.rst
+++ b/dim.rst
@@ -338,6 +338,14 @@ Backmerges *upstream* into *branch*, making a few sanity checks on the way. The
 using **pull-request**. Alternatively it can also be a tag, which if available
 should be preferred.
 
+rebase *branch* *upstream*
+-----------------------------
+
+Rebases *branch* onto *upstream*, making a few sanity checks on the way. The
+*upstream* we rebase onto should be the same as used for sending out pull requests
+using **pull-request**. Alternatively it can also be a tag, which if available
+should be preferred.
+
 update-next
 -----------
 Pushes out the latest dinq to drm-intel-next and tags it. Also
-- 
Sean Paul, Software Engineer, Google / Chromium OS



More information about the dim-tools mailing list