[PATCH 18/18] dim: Make update_linux_next multi-repo compliant

Daniel Vetter daniel.vetter at ffwll.ch
Fri Oct 21 19:37:00 UTC 2016


- Only update the for-linux-next branches in the repo for the branch
  just pushed.
- Roll out the same logic (to allow us to always merge feature
  patches) for drm-misc.

Signed-off-by: Daniel Vetter <daniel.vetter at intel.com>
---
 dim | 67 ++++++++++++++++++++++++++++++++++++++++++++-----------------------
 1 file changed, 44 insertions(+), 23 deletions(-)

diff --git a/dim b/dim
index f42b1eebf48b..f7e814878a18 100755
--- a/dim
+++ b/dim
@@ -249,30 +249,43 @@ function map_nightly_remote
 	get_remote_name $remote_url
 }
 
-function update_linux_next
+# update for-linux-next and for-linux-next-fixes branches
+function update_linux_next # branch next next-fixes fixes
 {
 	cd $DIM_PREFIX/drm-tip
+	local branch=$1
+	local linux_next=$2
+	local linux_next_fixes=$3
+	local linux_fixes=$4
 
-	local nightly_origin=`map_nightly_remote origin`
+	source $DIM_PREFIX/drm-rerere/nightly.conf
+
+	local nightly_remote=`get_nightly_remote_for_branch $branch`
+
+	if [[ $nightly_remote != `get_nightly_remote_for_branch $linux_next` ]] ; then
+		return
+	fi
+
+	local remote=`map_nightly_remote $nightly_remote`
 
 	# always update drm-intel-fixes
-	echo -n "Pushing drm-intel-fixes to for-linux-next-fixes... "
-	git push $DRY_RUN $nightly_origin +$nightly_origin/drm-intel-fixes:for-linux-next-fixes >& /dev/null
+	echo -n "Pushing $linux_fixes to for-linux-next-fixes... "
+	git push $DRY_RUN $remote +$remote/$linux_fixes:for-linux-next-fixes # >& /dev/null
 	echo "Done."
 
-	if git merge-base --is-ancestor $nightly_origin/drm-intel-next-fixes $nightly_origin/drm-intel-fixes ; then
+	if git merge-base --is-ancestor $remote/$linux_next_fixes $remote/$linux_fixes ; then
 		# -fixes has caught up to dinf, i.e. we're out of the merge
 		# window. Push the next queue.
-		echo -n "Out of merge window. Pushing drm-intel-next-queued to for-linux-next... "
-		git push $DRY_RUN $nightly_origin +$nightly_origin/drm-intel-next-queued:for-linux-next >& /dev/null
+		echo -n "Out of merge window. Pushing $linux_next to for-linux-next... "
+		git push $DRY_RUN $remote +$remote/$linux_next:for-linux-next >& /dev/null
 		echo "Done."
 	else
 		# dinf is ahead of -fixes, i.e. drm-next has already closed for
 		# the next merge window and we've started to gather new fixes
 		# for the current -next cycle. Push dinf
 
-		echo -n "Pushing drm-intel-next-fixes to for-linux-next... "
-		git push $DRY_RUN $nightly_origin +$nightly_origin/drm-intel-next-fixes:for-linux-next >& /dev/null
+		echo -n "Pushing $linux_next_fixes to for-linux-next... "
+		git push $DRY_RUN $remote +$remote/$linux_next_fixes:for-linux-next >& /dev/null
 		echo "Done."
 	fi
 }
@@ -428,8 +441,6 @@ function dim_rebuild_nightly
 		echo "Fail: Branch setup for the rerere-cache is borked."
 		exit 1
 	fi
-
-	update_linux_next
 }
 
 # push branch $1, rebuild nightly. the rest of the arguments are passed to git
@@ -450,6 +461,9 @@ function dim_push_branch
 
 	git push $DRY_RUN $remote $branch "$@"
 
+	update_linux_next $branch drm-intel-next-queued drm-intel-next-fixes drm-intel-fixes
+	update_linux_next $branch drm-misc-next drm-misc-next-fixes drm-misc-fixes
+
 	dim_rebuild_nightly
 }
 
@@ -683,6 +697,24 @@ function dim_create_branch
 	$DRY git commit --quiet -m "Adding $branch to -nightly"
 }
 
+function get_nightly_remote_for_branch
+{
+	local branch=$1
+
+	for tree in $nightly_branches; do
+		local nightly_branch=${tree%:*}
+		local nightly_remote=${nightly_branch%%/*}
+		nightly_branch=${nightly_branch#*/}
+
+		if [[ $nightly_branch == $branch ]] ; then
+			nightly_remote=$nightly_remote
+			echo $nightly_remote
+		fi
+	done
+
+	echo ""
+}
+
 function dim_remove_branch
 {
 	if [[ "x$1" = "x" ]]; then
@@ -707,18 +739,7 @@ function dim_remove_branch
 
 	source $DIM_PREFIX/drm-rerere/nightly.conf
 
-	local nightly_remote=""
-
-	for tree in $nightly_branches; do
-		local nightly_branch=${tree%:*}
-		local nightly_remote=${nightly_branch%%/*}
-		nightly_branch=${nightly_branch#*/}
-
-		if [[ $nightly_branch == $branch ]] ; then
-			nightly_remote=$nightly_remote
-			break
-		fi
-	done
+	local nightly_remote=`get_nightly_remote_for_branch $branch`
 
 	if [[ $nightly_remote == "" ]] ; then
 		echoerr "$branch not found in nightly.conf"
-- 
2.9.3



More information about the dri-devel mailing list