igor@333: #!/bin/bash igor@333: igor@333: if hg -v | head -1 | grep -e "version 0.*" igor@333: then igor@333: #On mercurial 1.0 and later bisect is a builtin igor@333: echo '[extensions]' >> $HGRC igor@333: echo 'hbisect =' >> $HGRC igor@333: fi igor@333: igor@333: # XXX There's some kind of horrible nondeterminism in the execution of igor@333: # bisect at the moment. Ugh. igor@333: igor@333: #$ ignore: .* igor@333: igor@333: #$ name: init igor@333: igor@333: hg init mybug igor@333: cd mybug igor@333: igor@333: #$ name: commits igor@333: igor@333: buggy_change=22 igor@333: igor@333: for (( i = 0; i < 35; i++ )); do igor@333: if [[ $i = $buggy_change ]]; then igor@333: echo 'i have a gub' > myfile$i igor@333: hg commit -q -A -m 'buggy changeset' igor@333: else igor@333: echo 'nothing to see here, move along' > myfile$i igor@333: hg commit -q -A -m 'normal changeset' igor@333: fi igor@333: done igor@333: igor@333: #$ name: help igor@333: igor@333: hg help bisect igor@333: igor@333: #$ name: search.init igor@333: igor@333: if hg -v | head -1 | grep -e "version 0.*" igor@333: then igor@333: #On mercurial 1.0 --init disappeared igor@333: hg bisect --init igor@333: fi igor@333: igor@333: #$ name: search.bad-init igor@333: igor@333: hg bisect --bad igor@333: igor@333: #$ name: search.good-init igor@333: igor@333: hg bisect --good 10 igor@333: igor@333: #$ name: search.step1 igor@333: igor@333: if grep -q 'i have a gub' * igor@333: then igor@333: result=bad igor@333: else igor@333: result=good igor@333: fi igor@333: igor@333: echo this revision is $result igor@333: hg bisect --$result igor@333: igor@333: #$ name: search.mytest igor@333: igor@333: mytest() { igor@333: if grep -q 'i have a gub' * igor@333: then igor@333: result=bad igor@333: else igor@333: result=good igor@333: fi igor@333: igor@333: echo this revision is $result igor@333: hg bisect --$result igor@333: } igor@333: igor@333: #$ name: search.step2 igor@333: igor@333: mytest igor@333: igor@333: #$ name: search.rest igor@333: igor@333: mytest igor@333: mytest igor@333: mytest igor@333: igor@333: #$ name: search.reset igor@333: igor@333: hg bisect --reset igor@333: igor@333: #$ name: igor@333: igor@333: exit 0