4

通常、私は最後に、二等分線をより深く続けるためにhg bisect -c "my command"走るべきだというメモを受け取ります。hg bisect --extend <ancestor_cset>

Mercurial2.1.2を使用しています。Mercurial 2.1より前のメッセージは、hgbisectの代わりにhgupdateを使用することでした--extend

犯人のcsetが10レベルの深さであるため、このコマンドを手動で10回実行する必要がありますhg bisect --extend <ancestor_cset> && hg bisect -c "my command"

--extend部分を自動化し、原因のcsetが見つかるまで二等分線で部分を運ぶ方法はありますか?

4

1 に答える 1

7

Bisect は、変更セットの初期範囲を超えません。そのため、最初に changeset 10 を良いものに、changeset 20 を悪いものに設定し、数回繰り返した後、cs 12 が不適切であることが判明したが、cs 5 とのマージである場合、bisect は停止します。 --extend次に、最初の 10 ~ 20 の範囲外に範囲を拡大するために使用されます。範囲全体を検索したい場合は、cs 0 を good に、tip を bad に設定してください。extend を使用する必要はありません。

次の歴史を考えてみましょう。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.

しかし、changeset 0 を良いものに設定し、tip を悪いものに設定すると、extend なしで適切な変更セットが見つかります。

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
于 2012-05-05T02:47:53.550 に答える