rebaseif Mercurial拡張機能は、プル時に、競合なしでマージを自動的に実行できる場合にのみ、リベースを実行するプロセスを自動化します。(手動で解決する競合がある場合、リベースは行われないため、2つのブランチを手動でマージする準備が整います。)これにより、開発者がコードのさまざまな部分で作業しているときに履歴が単純化および線形化されますが、リベースはスローされます。開発者が作業を行っていたときの世界の状態に関する情報を削除します。私はこのような議論に同意する傾向があります一般的なケースでは、リベースは良い考えではありませんが、リベース-哲学が競合しない場合に魅力的である場合、私はリベースを見つけます。コードのさまざまな部分で変更が発生した場合、ロジックエラーのリスクがまだあることを理解していますが、私はそれについて気を配っています(そして、rebaseif拡張機能の作成者はそれが悪い考えだと感じるようになりました。)
私は最近、複雑で苦痛なバイセクトを経験しました。リポジトリに短いブランチのマージが多数あることが、バイセクトが暗黙のO(lg n)の約束を果たせなかった主な理由だと思います。マージを超えて範囲を拡張するために、「bisect --extend」を何度も実行する必要があることに気付きました。一度にいくつかのチェンジセットを実行して、基本的にbisect O(n)を作成します。また、リポジトリのグラフを見ると分岐を追跡できなかったため、バイセクトがどのように進んでいるかを追跡し、これまでに取得した情報を理解するのは非常に複雑でした。
bisectを使用する(そして改訂履歴を見て理解する)より良い方法はありますか、それとも開発でrebaseifをもっと使用していれば、プロセスはよりスムーズだったでしょう。または、競合していない場合にリベースを使用すると何がうまくいかないのかをより具体的に理解するのに役立ちますか?問題を引き起こす可能性があり、回避する必要がありますか?
rebaseifはより一般的なgitワークフローに一致すると思うので、これをより一般的に(Mercurialだけでなく)タグ付けしています。gitユーザーは落とし穴を見たことがあるかもしれません。