| 1 | #!/bin/sh |
| 2 | |
| 3 | set -e |
| 4 | |
| 5 | if test "bisect-create" = "`basename $0`" ; then |
| 6 | echo tools/ffbisect created |
| 7 | git show master:tools/bisect-create > tools/ffbisect |
| 8 | chmod u+x tools/ffbisect |
| 9 | exit 1 |
| 10 | fi |
| 11 | |
| 12 | if ! git show master:tools/bisect-create | diff - tools/ffbisect > /dev/null ; then |
| 13 | echo updating tools/ffbisect script to HEAD. |
| 14 | git show master:tools/bisect-create > tools/ffbisect |
| 15 | chmod u+x tools/ffbisect |
| 16 | tools/ffbisect $* |
| 17 | exit 0 |
| 18 | fi |
| 19 | |
| 20 | case "$1" in |
| 21 | need) |
| 22 | case $2 in |
| 23 | ffmpeg|ffplay|ffprobe|ffserver) |
| 24 | echo $2.c >> tools/bisect.need |
| 25 | ;; |
| 26 | esac |
| 27 | ;; |
| 28 | start|reset) |
| 29 | echo . > tools/bisect.need |
| 30 | git bisect $* |
| 31 | ;; |
| 32 | skip) |
| 33 | git bisect $* |
| 34 | ;; |
| 35 | good|bad) |
| 36 | git bisect $* |
| 37 | |
| 38 | until ls `cat tools/bisect.need` > /dev/null 2> /dev/null; do |
| 39 | git bisect skip || break |
| 40 | done |
| 41 | ;; |
| 42 | run) |
| 43 | shift # remove "run" from arguments |
| 44 | git bisect run sh -c "ls \`cat tools/bisect.need\` > /dev/null 2> /dev/null || exit 125; \"\$@\"" sh "$@" |
| 45 | ;; |
| 46 | esac |