[dpdk-stable] [RFC stable-scripts v2] 1-import: don't filter commits for later releases that fix backported patches

Luca Boccassi bluca at debian.org
Tue Sep 25 14:36:10 CEST 2018


A patch might fix a commit in a later release and so it is skipped. But
that commit might have been backported in the past, so skipping the
patch is wrong.
Rework the list pruning to take this case into account.

Signed-off-by: Luca Boccassi <bluca at debian.org>
---
v2: create $stable_release directory in case it's not already there
    (first round of backporting)

 1-import | 40 +++++++++++++++++++++++++++++-----------
 1 file changed, 29 insertions(+), 11 deletions(-)

diff --git a/1-import b/1-import
index 05dfdf0..497c0ae 100755
--- a/1-import
+++ b/1-import
@@ -28,18 +28,36 @@ import_one_commit()
 if [ "$PRUNE_COMMITS" = "yes" ]
 then
 	get_stable_release
-	# need to update it in 2021!
-	for _major in {16..20}
+	tmp_list=$PWD/$stable_release/tmp_list
+	rm -f $tmp_list
+	mkdir -p $PWD/$stable_release
+
+	pushd $STABLE_DIR &>/dev/null
+	log=$($GIT log v${RTE_VER_MAJOR}..v$last_release)
+	while read line
 	do
-		for _minor in {02..11..3}
-		do
-			if verlte $stable_release $_major.$_minor
-			then
-				sed -i "/($_major.$_minor (partially.*\$/d" $commit_list
-				sed -i "/($_major.$_minor)\$/d" $commit_list
-			fi
-		done
-	done
+		# Get the id of the commit being fixed, for the first check
+		id=$(echo $line | awk '{print $2}')
+		fixes=$($GIT log --format='%b' -1 $id | sed -n 's,^ *\([Ff]ixes\|[Rr]everts\): *\([0-9a-f]*\).*,\2,p')
+
+		# Was stable CC'ed without a Fixes line? If so select it just in case
+		if echo $line | grep -q "(N/A)"
+		then
+			echo $line >> $tmp_list
+		# Is the patch fixing a commit that was part of this stable release?
+		# If so select it
+		elif verlte `echo $line | sed "s/.*(\([0-9][0-9].[0-9][0-9]\).*)/\1/"` $stable_release
+		then
+			echo $line >> $tmp_list
+		# Was the commit (which might be only in a subsequent release)
+		# that the patch "fixes" backported? If so select it
+		elif test -n fixes && echo $log | grep -q -e "backported from commit $fixes" -e "upstream commit $fixes"
+		then
+			echo $line >> $tmp_list
+		fi
+	done < $commit_list
+	popd &>/dev/null
+	mv $tmp_list $commit_list
 fi
 
 if [ "$GIT_AM_PAUSE_ON_FAIL" = "yes" ]
-- 
2.18.0



More information about the stable mailing list