[RFC] dim: drm-intel: Include drm-intel-gt-next as part of unified fixes flow

Rodrigo Vivi rodrigo.vivi at intel.com
Tue Sep 29 19:36:10 UTC 2020


This is the minimal and more straight forward way to do it,
although I'm sure there are better ways.

Since I'm not confident yet with the overall approach, let's
at least use this for a proposal.

Signed-off-by: Rodrigo Vivi <rodrigo.vivi at intel.com>
---
 dim | 105 ++++++++++++++++++++++++++++++++++--------------------------
 1 file changed, 59 insertions(+), 46 deletions(-)

diff --git a/dim b/dim
index c3a048db8956..9c1891e79a81 100755
--- a/dim
+++ b/dim
@@ -1373,64 +1373,77 @@ function git_list_fixes
 	    "$@"
 }
 
-function cherry_pick_branch
+function cherry_pick_commit
 {
-	local branch log fail_log intel_remote needed have_fixes
+	local commit have_fixes needed
+	commit=${1:?$usage}
 
-	branch=${1:?$usage}
-	log=$(mktemp)
-	fail_log=$(mktemp)
+	echo -n "Considering $(dim_cite $commit)... "
 
-	intel_remote=$(repo_to_remote drm-intel)
+	# Look at history for already cherry-picked fixes.
+	# Note: use *local* branches to account for unpushed commits.
+	git log drm-intel-fixes --format=format:%h --after=6months \
+	    --grep="cherry picked .* $commit" > $log
+	if [ "$(cat $log)" = "" ]; then
+		git log drm-intel-next-fixes --format=format:%h --after=6months \
+		    --grep="cherry picked .* $commit" > $log
+	fi
 
-	# Look for commits in dinq tagged as fixes.
-	for commit in $(git_list_fixes $intel_remote/$branch..$intel_remote/drm-intel-next-queued -- drivers/gpu/drm/i915); do
-		echo -n "Considering $(dim_cite $commit)... "
+	if [ "$(cat $log)" != "" ]; then
+		echo "Already backported as $(tr "\n" " " < $log). OK."
+		continue
+	fi
 
-		# Look at history for already cherry-picked fixes.
-		# Note: use *local* branches to account for unpushed commits.
-		git log drm-intel-fixes --format=format:%h --after=6months \
-		    --grep="cherry picked .* $commit" > $log
-		if [ "$(cat $log)" = "" ]; then
-			git log drm-intel-next-fixes --format=format:%h --after=6months \
-			    --grep="cherry picked .* $commit" > $log
+	have_fixes=
+	needed=
+	for fixes in $(git show -s $commit | grep -i "^    Fixes: *[0-9a-fA-F]" | sed 's/^ *[Ff]ixes: *\([0-9a-fA-F]\+\).*/\1/'); do
+		have_fixes=1
+		fixes=$(git log -1 --format=format:%H $fixes 2>/dev/null || true)
+		if [[ -z "$fixes" ]]; then
+			continue
 		fi
 
-		if [ "$(cat $log)" != "" ]; then
-			echo "Already backported as $(tr "\n" " " < $log). OK."
-			continue
+		# FIXME: see if the commit to be fixed has been
+		# backported!
+		echo -n "Fixes: $(dim_cite $fixes). "
+		if [[ "$(git merge-base $branch $fixes)" = "$fixes" ]]; then
+			needed=1
 		fi
+	done
 
-		have_fixes=
-		needed=
-		for fixes in $(git show -s $commit | grep -i "^    Fixes: *[0-9a-fA-F]" | sed 's/^ *[Ff]ixes: *\([0-9a-fA-F]\+\).*/\1/'); do
-			have_fixes=1
-			fixes=$(git log -1 --format=format:%H $fixes 2>/dev/null || true)
-			if [[ -z "$fixes" ]]; then
-				continue
-			fi
+	# Note: Cc: stable will overrule Fixes:
+	if [[ -n "$have_fixes" && -z "$needed" ]]; then
+		echo "Fixes a commit not in $branch. OK."
+		continue
+	fi
 
-			# FIXME: see if the commit to be fixed has been
-			# backported!
-			echo -n "Fixes: $(dim_cite $fixes). "
-			if [[ "$(git merge-base $branch $fixes)" = "$fixes" ]]; then
-				needed=1
-			fi
-		done
+	echo "Try to cherry-pick."
+	commit_list_references $commit
+	if ! git cherry-pick -x -s $commit; then
+		echo "FAILED: $(dim_cite $commit)"
+		(dim_cite $commit) >> $fail_log
+		git cherry-pick --abort
+	fi
+}
 
-		# Note: Cc: stable will overrule Fixes:
-		if [[ -n "$have_fixes" && -z "$needed" ]]; then
-			echo "Fixes a commit not in $branch. OK."
-			continue
-		fi
+function cherry_pick_branch
+{
+	local branch log fail_log intel_remote
 
-		echo "Try to cherry-pick."
-		commit_list_references $commit
-		if ! git cherry-pick -x -s $commit; then
-			echo "FAILED: $(dim_cite $commit)"
-			(dim_cite $commit) >> $fail_log
-			git cherry-pick --abort
-		fi
+	branch=${1:?$usage}
+	log=$(mktemp)
+	fail_log=$(mktemp)
+
+	intel_remote=$(repo_to_remote drm-intel)
+
+	# Look for commits in dinq tagged as fixes.
+	for commit in $(git_list_fixes $intel_remote/$branch..$intel_remote/drm-intel-next-queued -- drivers/gpu/drm/i915); do
+		cherry_pick_commit $commit
+	done
+
+	# Look for commits in dinq tagged as fixes.
+	for commit in $(git_list_fixes $intel_remote/$branch..$intel_remote/drm-intel-gt-next -- drivers/gpu/drm/i915); do
+		cherry_pick_commit $commit
 	done
 
 	# FIXME: evolve this into an email report to commit authors etc.
-- 
2.26.2



More information about the dim-tools mailing list