Как автоматизировать hg bisect - расширить возможности следовать за общими предками?
Обычно в конце hg bisect -c "my command"
Я получаю записку о том, что я должен бежать hg bisect --extend <ancestor_cset>
продолжить мое деление пополам.
Я использую Mercurial 2.1.2. До Mercurial 2.1, я сообщение было использовать hg update вместо hg bisect --extend
Это становится действительно раздражающим, когда преступник cset составляет около 10 уровней, поэтому я должен выполнить эту команду вручную 10 раз hg bisect --extend <ancestor_cset> && hg bisect -c "my command"
,
Есть ли способ просто автоматизировать часть --extend и переносить ее с делением пополам до тех пор, пока не будет найден преступник cset?
1 ответ
Bisect не выйдет за пределы начального диапазона наборов изменений. Таким образом, если вы изначально установили набор изменений 10 как хороший, а набор изменений 20 - как плохой, и после нескольких итераций cs 12 будет найден плохим, но произойдет слияние с cs 5, bisect остановится. --extend
затем используется для расширения диапазона за пределы начальных 10-20. Если вы хотите выполнить поиск по всему диапазону, установите cs 0 как хорошее, а чаевые - как плохие, и вам никогда не придется использовать расширение.
Рассмотрим следующую историю. Changeset 4 вводит "ошибку".
@ 12:8ae1fff407c8:bad6
|
o 11:27edd4ba0a78:bad5
|
o 10:312ba3d6eb29:bad4
|\
| o 9:68ae20ea0c02:good33
| |
| o 8:916e977fa594:good32
| |
| o 7:b9d00094223f:good31
| |
o | 6:a7cab1800465:bad3
| |
o | 5:a84e45045a29:bad2
| |
o | 4:d0a381a67072:bad1
| |
o | 3:54349a6276cc:good4
|/
o 2:4588e394e325:good3
|
o 1:de79725cb39a:good2
|
o 0:2641cc78ce7a:good1
Теперь, если я отмечу набор изменений 7 как хороший, а чаевые как плохие, то 10 будет считаться первым плохим набором изменений, но это слияние и предлагает расширить поиск до набора изменений 2 (общего предка):
C:\data>hg bisect -r
C:\data>hg bisect -g 7
C:\data>hg bisect -b tip
Testing changeset 9:68ae20ea0c02 (5 changesets remaining, ~2 tests)
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\data>hg bisect -c check.bat
Changeset 9:68ae20ea0c02: good
Changeset 10:312ba3d6eb29: bad
The first bad revision is:
changeset: 10:312ba3d6eb29
parent: 9:68ae20ea0c02
parent: 6:a7cab1800465
summary: bad4
Not all ancestors of this changeset have been checked.
Use bisect --extend to continue the bisection from
the common ancestor, 4588e394e325.
Но если я установлю набор изменений 0 как хороший, а чаевые - как плохой, он найдет правильный набор изменений без расширения:
C:\data>hg bisect -g 0
C:\data>hg bisect -b tip
Testing changeset 6:a7cab1800465 (12 changesets remaining, ~3 tests)
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
C:\data>hg bisect -c check.bat
Changeset 6:a7cab1800465: bad
Changeset 3:54349a6276cc: good
Changeset 4:d0a381a67072: bad
The first bad revision is:
changeset: 4:d0a381a67072
summary: bad1