0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CodeRabbitでマージのコンフリクトを解消する。Resolve Merge Conflictsの紹介

0
Posted at

CodeRabbitはAIコードレビューサービスです。GitHubやGitLabなどと連携し、PRを自動的にコードレビューします。VS Code機能拡張やCLIも提供しており、こちらは無料で利用できます。パブリックなリポジトリであれば、CodeRabbitを無料で利用できます。

最近のアップデートの一つ、Resolve Merge Conflictsを紹介します。名前の通り、マージの際のコンフリクト解消をCodeRabbitにまかせてしまえる機能です。

コンフリクトがあった場合

PRでマージ対象ブランチとのコンフリクトがあった場合、CodeRabbitが Merge conflicts detected (Beta) のようにメッセージを出します。

image.png

そして、解決を任せる場合には、その下にあるチェックボックスをクリックするだけでOKです。

  • Resolve merge conflict in branch main

解決時の処理について

コンフリクト解消時の処理は以下のような流れになります。

  1. リポジトリをクローンし、競合する各ファイルを検査
  2. 各ブランチの変更の意図を判断した上で、解決策を提示

解決方法としては、単純なルールベースではなく、各ブランチの達成しようとしているコンテキストを読み取り、正しい統合結果を判断します。

解決の際には、必要に応じてファイルの編集が行われます。これは競合が発生した部分だけでなく、両方の変更に対応するような形での新たな編集も行われます。

正しい解決策が不明瞭な場合や、セキュリティ上重要なロジックが関係する場合には、コンフリクト解消を拒否し、手動レビューのためのフラグ付を行います。

最終的な処理について

コンフリクトが解消した場合には、競合マーカーが残っていないこと、マージインデックスがクリアされていることを確認します。そして、リポジトリ内にあるビルドコマンドやLintコマンドを実行して、エラーがないことを確認します。

修正内容はPRに対する追加コミットとして送信されます。

解決できない競合について

CodeRabbitでは、以下の2つのパターンに適合する場合、競合解決しません。

  1. セキュリティ上重要なコード
    認証ロジックや暗号化、秘密情報処理、アクセス制御など
  2. 互換性のないビジネスロジック
    両方の変更が相互に排他的である場合

実行方法について

コンフリクトがある場合には、PRに Merge conflicts detected (Beta) というメッセージが出ます。もし手動で実行したい場合には、チャットに以下のメッセージを書いて実行してください。

@coderabbitai resolve merge conflict

まとめ

コンフリクトの解消は、人が実行する場合にも難しいケースもあります。また、処理に時間がかかるものでしょう。CodeRabbitを使って、スマートに解決してください。

今後AIエージェントの並列実行が増え、さらにコンフリクトが発生しやすくなると思われます。ぜひCodeRabbitを試してみてください。

Resolve Merge Conflicts - CodeRabbit Documentation

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?