mergelock について
mergelockは、開発者やコーディングエージェント向けのGitネイティブなマージゲートです。コミット情報から、関数シグネチャの変更と新しい呼び出しの不整合などを検出し、作業ツリーは変更しません。
主な機能
- 01テキストのマージ競合検出
- 02シグネチャと呼び出しの不一致検出
- 03使用中の削除済みシンボルの報告
- 04重複定義の検出
- 05TypeScript、JavaScript、Pythonの解析
活用シーン
- 01マージ前のブランチ確認
- 02CIでのマージチェック
- 03プッシュ前ゲートの設定
- 04コーディングエージェントによる競合確認
MCP 対応
mergelockは標準入出力経由でMCPサーバーとして動作し、AIエージェントがブランチの競合を確認できます。READMEにはMCPツールの詳細がありません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/sadayamuthu/mergelock:0.1.5ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/sadayamuthu/mergelock:0.1.5stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mergelock
git ネイティブのマージゲートです。mergelock check は2つのブランチがマージされる前に比較し、git 自体では検出できない競合を報告します。たとえば、一方のブランチで関数のシグネチャが変更され、もう一方のブランチで古いシグネチャへの呼び出しが追加された場合、一方でシンボルが削除されても、もう一方では引き続き使われている場合、同じ関数が2回書かれている場合などです。

作業ツリーには一切触れません。すべて git merge-tree と tree-sitter パーサーを使ってコミットから計算されるため、pre-push フックや CI、MCP 経由で AI コーディングエージェントから安全に実行できます。
検出する内容
| ルール | 報告内容 | 重大度 |
|---|---|---|
textual | 通常の git コンテンツ競合 | error |
add_add | 両方のブランチで同じパスにファイルが追加された | error |
modify_delete | 一方のブランチで編集されたファイルまたはシンボルが、もう一方のブランチで削除された場合、または削除されたシンボルが引き続き呼び出されている場合 | error |
signature_caller | 一方のブランチでシグネチャが変更され、もう一方のブランチで適合しなくなった呼び出しが追加された | error |
duplicate_definition | 両方のブランチで同じ関数が、名前またはほぼ同一の本体によって追加された | warning |
セマンティックルールはTypeScript、JavaScript(TSX/JSX を含む)、Pythonを認識します。それ以外の言語のファイルにも、textual、add/add、modify/delete のチェックが適用されます。
インストール
mergelock にはgit 2.38 以降が必要です(git merge-tree --write-tree を使用するため)。
Homebrew(macOS および Linux):
brew install sadayamuthu/tap/mergelock
Debian / Ubuntu(.deb、amd64 および arm64。Debian 12 や Ubuntu 24.04 など、git 2.38 以降を含むディストリビューションが必要です):
VERSION=0.1.5 # latest release, without the v
curl -fLO "https://github.com/sadayamuthu/mergelock/releases/download/v${VERSION}/mergelock_${VERSION}_$(dpkg --print-architecture).deb"
sudo apt install "./mergelock_${VERSION}_$(dpkg --print-architecture).deb"
Fedora / RHEL(.rpm、x86_64 および aarch64):
VERSION=0.1.5
sudo dnf install "https://github.com/sadayamuthu/mergelock/releases/download/v${VERSION}/mergelock-${VERSION}-1.$(uname -m).rpm"
Docker(linux/amd64 および linux/arm64。リポジトリを /repo にマウントしてください):
docker run --rm -v "$PWD":/repo ghcr.io/sadayamuthu/mergelock check my-branch main --format text
docker run -i --rm -v "$PWD":/repo ghcr.io/sadayamuthu/mergelock # MCP server on stdio
GitHub Actions(各プルリクエストをベースブランチと照合します。CI での使用を参照してください):
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: sadayamuthu/mergelock@v0
ビルド済みバイナリ(macOS および Linux、amd64 および arm64):お使いのプラットフォーム用のアーカイブを最新リリースからダウンロードし、mergelock を PATH に配置してください:
tar -xzf mergelock_*_$(uname -s | tr A-Z a-z)_*.tar.gz
sudo mv mergelock /usr/local/bin/
macOS では、ブラウザーでダウンロードしたアーカイブ内のバイナリは、まだ署名されていないため Gatekeeper によってブロックされます(Homebrew でのインストールには影響しません)。隔離フラグを一度解除してください:
xattr -d com.apple.quarantine /usr/local/bin/mergelock
Go を使用する場合(tree-sitter に cgo を使用するため、Go 1.25 以降と C コンパイラーが必要です。macOS では Xcode コマンドラインツールを、Debian/Ubuntu では build-essential をインストールしてください):
go install github.com/sadayamuthu/mergelock/cmd/mergelock@latest
または、ソースからビルドします:
git clone https://github.com/sadayamuthu/mergelock.git
cd mergelock
go build -ldflags "-X main.version=$(git describe --tags --always)" -o mergelock ./cmd/mergelock
動作を確認します:
mergelock version
クイックスタート
任意の Git リポジトリ内で実行します。
# Is my branch safe to merge into main?
mergelock check my-feature main
# Compare against the configured target (main by default)
mergelock check my-feature
# Will two in-flight branches collide with each other?
mergelock check feat-a feat-b --format text
終了コードを使うと、スクリプトを簡単に作成できます。
| コード | 結果 |
|---|---|
| 0 | clean:検出結果なし |
| 1 | warnings:警告のみ |
| 2 | conflict:エラーが少なくとも1件 |
| 3 | 操作エラー(ブランチ名が不正、Git リポジトリではない、設定が無効など) |
コマンドの詳細なリファレンス、.mergelock.yml の設定、JSON 出力スキーマ、CI と Git フックのレシピ、MCP 経由で AI エージェントに接続する方法については、USAGE.md を参照してください。
見逃された競合の報告や言語の追加については CONTRIBUTING.md を、セキュリティ上の問題については SECURITY.md を参照してください。
開発
go test ./... # full suite, incl. fixture gate and 5,000-file perf test
go test -short ./... # skips the perf test
go vet ./...
gofmt -l .
ルールの動作は、testdata/fixtures/*.txtar にあるブランチペアのフィクスチャで固定されています。それぞれのフィクスチャは、ベース、2つのブランチ、期待される検出結果を含む小さなリポジトリです。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。