[Mesa-dev] [PATCH 2/2] bin/get-fixes-pick-list.sh: better identify multiple "fixes:" tags

Emil Velikov emil.l.velikov at gmail.com
Mon May 15 10:56:22 UTC 2017


On 13 May 2017 at 01:11, Andres Gomez <agomez at igalia.com> wrote:
> 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
>
> Signed-off-by: Andres Gomez <agomez at igalia.com>
> ---
>  bin/get-fixes-pick-list.sh | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/bin/get-fixes-pick-list.sh b/bin/get-fixes-pick-list.sh
> index f9afcc49ce..32d830cda0 100755
> --- a/bin/get-fixes-pick-list.sh
> +++ b/bin/get-fixes-pick-list.sh
> @@ -36,14 +36,18 @@ 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:/\nfixes:/Ig' | grep "fixes:" | sed -e 's/\(fixes:\)[[:space:]]*\([a-zA-Z0-9]*\).*$/\1\2/g'`
Do we need the tr -d?

Nit: Let's also handle any trailing whitespace after the tag.
Something like the following should do it.

's/fixes:[[:space:]]*/\nfixes:/Ig'


> +
>         # 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
> +               fix=`echo "$fixes" | tail -n $fixes_count | head -n 1`
>                 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 ' '`
> +               id=`echo "$fix" | cut -d : -f 2`
Nit: fold the fix line in here?

With the nitpicks the series is
Reviewed-by: Emil Velikov <emli.velikov at collabora.com>

-Emil

P.S. An alternative construct that just hit me. It allows us to drop
the "tail | head" dance, drop the count variable and make the whole
thing a bit easier to read.
I'm quite biased of course, but if you agree I can address it as a
follow-up patch.

    # try to fold ill-formed fixes tags
    fixes=`git show -s $sha ...
    count=... // obsolete? see below
    warn=0
    save_IFS...
    IFS=\n
    for i in fixes; do
        $process
        if failed; then
            # warn if we fail to parse any of the tags
            warn=1
            continue
        fi
    done
    restore_IFS

    # only if there's multiple?
    # with the sed pattern fixed, we well drop the multiple 'requirement'
    if warn /* && count -gt 1 */; then
        echo WARNING
    fi


More information about the mesa-dev mailing list