Как автоматизировать 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
Другие вопросы по тегам