12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- #!/bin/sh
- # This script checks the git log for URLs to the QEMU launchpad bugtracker
- # and optionally checks whether the corresponding bugs are not closed yet.
- show_help () {
- echo "Usage:"
- echo " -s <commit> : Start searching at this commit"
- echo " -e <commit> : End searching at this commit"
- echo " -c : Check if bugs are still open"
- echo " -b : Open bugs in browser"
- }
- while getopts "s:e:cbh" opt; do
- case "$opt" in
- s) start="$OPTARG" ;;
- e) end="$OPTARG" ;;
- c) check_if_open=1 ;;
- b) show_in_browser=1 ;;
- h) show_help ; exit 0 ;;
- *) echo "Use -h for help." ; exit 1 ;;
- esac
- done
- if [ "x$start" = "x" ]; then
- start=`git tag -l 'v[0-9]*\.[0-9]*\.0' | tail -n 2 | head -n 1`
- fi
- if [ "x$end" = "x" ]; then
- end=`git tag -l 'v[0-9]*\.[0-9]*\.0' | tail -n 1`
- fi
- if [ "x$start" = "x" ] || [ "x$end" = "x" ]; then
- echo "Could not determine start or end revision ... Please note that this"
- echo "script must be run from a checked out git repository of QEMU."
- exit 1
- fi
- echo "Searching git log for bugs in the range $start..$end"
- urlstr='https://bugs.launchpad.net/\(bugs\|qemu/+bug\)/'
- bug_urls=`git log $start..$end \
- | sed -n '\,'"$urlstr"', s,\(.*\)\('"$urlstr"'\)\([0-9]*\).*,\2\4,p' \
- | sort -u`
- echo Found bug URLs:
- for i in $bug_urls ; do echo " $i" ; done
- if [ "x$check_if_open" = "x1" ]; then
- echo
- echo "Checking which ones are still open..."
- for i in $bug_urls ; do
- if ! curl -s -L "$i" | grep "value status" | grep -q "Fix Released" ; then
- echo " $i"
- final_bug_urls="$final_bug_urls $i"
- fi
- done
- else
- final_bug_urls=$bug_urls
- fi
- if [ "x$final_bug_urls" = "x" ]; then
- echo "No open bugs found."
- elif [ "x$show_in_browser" = "x1" ]; then
- # Try to determine which browser we should use
- if [ "x$BROWSER" != "x" ]; then
- bugbrowser="$BROWSER"
- elif command -v xdg-open >/dev/null 2>&1; then
- bugbrowser=xdg-open
- elif command -v gnome-open >/dev/null 2>&1; then
- bugbrowser=gnome-open
- elif [ "`uname`" = "Darwin" ]; then
- bugbrowser=open
- elif command -v sensible-browser >/dev/null 2>&1; then
- bugbrowser=sensible-browser
- else
- echo "Please set the BROWSER variable to the browser of your choice."
- exit 1
- fi
- # Now show the bugs in the browser
- first=1
- for i in $final_bug_urls; do
- "$bugbrowser" "$i"
- if [ $first = 1 ]; then
- # if it is the first entry, give the browser some time to start
- # (to avoid messages like "Firefox is already running, but is
- # not responding...")
- sleep 4
- first=0
- fi
- done
- fi
|