3

私はHgに不慣れです。動作していた機能がありますが、現在は動作していません。動作するリビジョンに到達するまで、変更を段階的に元に戻したいです。これを行うための最良の方法が何であるかはよくわかりません。

リポジトリを古いリビジョンに複製してみたところ、そこで機能することがわかりました。では...その後の変更に更新するにはどうすればよいですか?複製されたリポジトリでは、defaultandtipリビジョンは私が複製したものです。

パッチを適用する必要がありますか?棚の変更?よくわかりません。

4

3 に答える 3

3

bisectこのコマンドを使用して、機能が機能しなくなった時期をすばやく把握する必要があります。次のように機能します。

まず、二等分状態をリセットし、現在の作業ディレクトリの親リビジョンを不良としてマークします。

hg bisect --reset
hg bisect --bad

次に、機能が機能していたと思う時期を推測します。6月1日に機能していたと思われる場合は、次のことができます。

hg update -d '<Jun 1'

このupdateコマンドは、特定のチェンジセットに一致するように作業ディレクトリを更新するために使用するものです。hg help dates日付形式のリストについては、を参照してください。ここで、このリビジョンをテストする必要があります。機能がここで機能する場合は、それを良好としてマークします。

hg bisect --good

このチェンジセットで機能が機能しない場合は、それを不良としてマークし、過去にさらに更新します。

hg bisect --bad
hg update -d '<May 1'

適切なリビジョンが見つかるまでこれを繰り返します。良いリビジョンを見つけたら、Mercurialがお手伝いします。良いチェンジセットと悪いチェンジセットの間のチェンジセットにはバグが含まれている必要があります。Mercurialは、候補となるチェンジセットのリストを追跡し、リストを1つのチェンジセットに絞り込むのに役立ちます。これは、候補者のほぼ真ん中にあるチェンジセットに更新し、このチェンジセットをテストするように依頼することによって行われます。

テスト後、チェンジセットを良好または不良としてマークします。良いとマークすると、バグは将来さらに存在することがわかります。悪いとマークすると、バグは過去にさらに存在します。どちらの場合も、各ステップで候補者の約半分を切り取ります。これは、1024個の候補をテストするのに10ステップしか必要ないことを意味します-これは対数の力です:-) Mercurialは候補を追跡し、各テスト後に新しいスポットに更新します。

完全なセッションは次のようになります(ここではランダムに良い/悪いと言っています):

%hg bisect --reset
%hg bisect --bad
%hg update -r -100
61個のファイルが更新され、0個のファイルがマージされ、9個のファイルが削除され、0個のファイルが未解決
%hg bisect --good
チェンジセット11414:0fa4474bdc2fのテスト(残り99個のチェンジセット、約6個のテスト)
46ファイルが更新され、0ファイルがマージされ、0ファイルが削除され、0ファイルが未解決
%hg bisect --good
チェンジセットのテスト11439:778377be3662(残り50のチェンジセット、最大5つのテスト)
17個のファイルが更新され、0個のファイルがマージされ、0個のファイルが削除され、0個のファイルが未解決
%hg bisect --bad
チェンジセット11428:4d03c3680400のテスト(残り25のチェンジセット、最大4つのテスト)
6ファイルが更新され、0ファイルがマージされ、0ファイルが削除され、0ファイルが未解決
%hg bisect --bad
チェンジセット11420:a99ef3711890のテスト(残り13のチェンジセット、最大3つのテスト)
3つのファイルが更新され、0のファイルがマージされ、0のファイルが削除され、0のファイルが未解決です
%hg bisect --bad
チェンジセット11417:6f1d1ed3e19aのテスト(残り6つのチェンジセット、約2つのテスト)
4ファイルが更新され、0ファイルがマージされ、0ファイルが削除され、0ファイルが未解決
%hg bisect --good
チェンジセット11418:67bb9d78f05eのテスト(残り3つのチェンジセット、約1つのテスト)
1ファイルが更新され、0ファイルがマージされ、0ファイルが削除され、0ファイルが未解決
%hg bisect --bad
最初の悪いリビジョンは次のとおりです。
チェンジセット:11418:67bb9d78f05e
ユーザー:Matt Mackall
日付:月6月21日13:25:42 2010 -0500
要約:マージ:祖先検索を安定させるために引数をソートする
于 2010-07-01T08:06:23.413 に答える
0

残りの変更セットを使用して繰り返します

hg pull -r <revision> [<original repo>]

ここにいくつかのドキュメントがあります。

于 2010-07-01T06:35:09.027 に答える
0

機能が欠落していたリビジョンを正確に見つけるには、を試すことができますhg bisectここで見つけることができます。

tipリポジトリ内の最新のリビジョン。defaultブランチの名前。デフォルトでは、作成時にリポジトリ内にあります。残りのチェンジセット(変更)をプルすることで追加できます。

hg help pull
于 2010-07-01T06:42:02.910 に答える