diff options
Diffstat (limited to 'bin/get-fixes-pick-list.sh')
-rwxr-xr-x | bin/get-fixes-pick-list.sh | 51 |
1 files changed, 26 insertions, 25 deletions
diff --git a/bin/get-fixes-pick-list.sh b/bin/get-fixes-pick-list.sh index f1398f320c8..cf95f283771 100755 --- a/bin/get-fixes-pick-list.sh +++ b/bin/get-fixes-pick-list.sh @@ -33,37 +33,38 @@ do # For each one try to extract the tag fixes_count=`git show $sha | grep -i "fixes:" | wc -l` - if [ "x$fixes_count" != x1 ] ; then - printf "WARNING: Commit \"%s\" has more than one Fixes tag\n" \ - "`git log -n1 --pretty=oneline $sha`" - fi - fixes=`git show $sha | grep -i "fixes:" | head -n 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 ' '` + while [ $fixes_count -gt 0 ] ; do + fixes=`git show $sha | grep -i "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 ' '` - # Bail out if we cannot find suitable id. - # Any specific validation the $id is valid and not some junk, is - # implied with the follow up code - if [ "x$id" = x ] ; then - continue - fi + # Bail out if we cannot find suitable id. + # Any specific validation the $id is valid and not some junk, is + # implied with the follow up code + if [ "x$id" = x ] ; then + continue + fi - # Check if the offending commit is in branch. + # Check if the offending commit is in branch. - # Be that cherry-picked ... - # ... or landed before the branchpoint. - if grep -q ^$id already_picked || - grep -q ^$id already_landed ; then + # Be that cherry-picked ... + # ... or landed before the branchpoint. + 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 + # 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 fi - printf "Commit \"%s\" fixes %s\n" \ - "`git log -n1 --pretty=oneline $sha`" \ - "$id" - fi + done done |