radv: enable VK_KHR_16bit_storage extension / 16bit storage features
[mesa.git] / bin / get-fixes-pick-list.sh
index cf95f283771c4fcc3c1db5a7384d8ddbf4307f79..047ea3bec1056ff9889a2a98fb08ad240fa19d24 100755 (executable)
@@ -16,7 +16,7 @@ latest_branchpoint=`git merge-base origin/master HEAD`
 git log --reverse --pretty=%H $latest_branchpoint > already_landed
 
 # ... and the ones cherry-picked.
-git log --reverse --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
+git log --reverse --pretty=medium --grep="cherry picked from commit" $latest_branchpoint..HEAD |\
        grep "cherry picked from commit" |\
        sed -e 's/^[[:space:]]*(cherry picked from commit[[:space:]]*//' -e 's/)//'  > already_picked
 
@@ -31,13 +31,22 @@ do
                fi
        fi
 
+       # Skip if it has been already cherry-picked.
+       if grep -q ^$sha already_picked ; then
+               continue
+       fi
+
+       # Place every "fixes:" tag on its own line and join with the next word
+       # on its line or a later one.
+       fixes=`git show --pretty=medium -s $sha | tr -d "\n" | sed -e 's/fixes:[[:space:]]*/\nfixes:/Ig' | grep "fixes:" | sed -e 's/\(fixes:[a-zA-Z0-9]*\).*$/\1/'`
+
        # For each one try to extract the tag
-       fixes_count=`git show $sha | grep -i "fixes:" | wc -l`
+       fixes_count=`echo "$fixes" | wc -l`
+       warn=`(test $fixes_count -gt 1 && echo $fixes_count) || echo 0`
        while [ $fixes_count -gt 0 ] ; do
-               fixes=`git show $sha | grep -i "fixes:" | tail -n $fixes_count | head -n 1`
+               # Treat only the current line
+               id=`echo "$fixes" | tail -n $fixes_count | head -n 1 | cut -d : -f 2`
                fixes_count=$(($fixes_count-1))
-               # The following sed/cut combination is borrowed from GregKH
-               id=`echo ${fixes} | sed -e 's/^[ \t]*//' | cut -f 2 -d ':' | sed -e 's/^[ \t]*//' | cut -f 1 -d ' '`
 
                # Bail out if we cannot find suitable id.
                # Any specific validation the $id is valid and not some junk, is
@@ -53,19 +62,19 @@ do
                if grep -q ^$id already_picked ||
                   grep -q ^$id already_landed ; then
 
-                       # Finally nominate the fix if it hasn't landed yet.
-                       if grep -q ^$sha already_picked ; then
-                               continue
-                       fi
-
                        printf "Commit \"%s\" fixes %s\n" \
                               "`git log -n1 --pretty=oneline $sha`" \
                               "$id"
-                       fixes_count=0
+                       warn=$(($warn-1))
                fi
 
        done
 
+       if [ $warn -gt 0 ] ; then
+               printf "WARNING: Commit \"%s\" has more than one Fixes tag\n" \
+                      "`git log -n1 --pretty=oneline $sha`"
+       fi
+
 done
 
 rm -f already_picked