bin/get-fixes-pick-list.sh: better identify multiple "fixes:" tags
authorAndres Gomez <agomez@igalia.com>
Sat, 13 May 2017 00:11:08 +0000 (03:11 +0300)
committerAndres Gomez <agomez@igalia.com>
Thu, 15 Jun 2017 12:53:21 +0000 (15:53 +0300)
We were not considering as multiple fixes lines with:
Fixes: $sha_1, Fixes: $sha_2
Now, we split the lines so we will consider them individually, as in:
Fixes: $sha_1,
Fixes: $sha_2
Additionally, we try to get the SHA from split lines so:
Fixes:
$sha_1

Will be considered as:
Fixes: $sha_1
v2:
 - Treat empty spaces earlier in fix lines (Emil)
 - Fold 2 lines into one to gather fix commit ids (Emil)

Signed-off-by: Andres Gomez <agomez@igalia.com>
Reviewed-by: Emil Velikov <emli.velikov@collabora.com>
bin/get-fixes-pick-list.sh

index f9afcc49ceb184355051f6c54bb2a7244784ba41..fb7ef2238201dbdacb8779faee7b0a5b21a204a8 100755 (executable)
@@ -36,14 +36,17 @@ do
                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 -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 -s $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 -s $sha | grep -i "fixes:" | tail -n $fixes_count`
+               # 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