mcpField
M
mergelock

mergelock

ローカル
github.comバージョン管理02 週間前に更新

mergelock について

mergelockは、開発者やコーディングエージェント向けのGitネイティブなマージゲートです。コミット情報から、関数シグネチャの変更と新しい呼び出しの不整合などを検出し、作業ツリーは変更しません。

主な機能

  1. 01テキストのマージ競合検出
  2. 02シグネチャと呼び出しの不一致検出
  3. 03使用中の削除済みシンボルの報告
  4. 04重複定義の検出
  5. 05TypeScript、JavaScript、Pythonの解析

活用シーン

  1. 01マージ前のブランチ確認
  2. 02CIでのマージチェック
  3. 03プッシュ前ゲートの設定
  4. 04コーディングエージェントによる競合確認

MCP 対応

mergelockは標準入出力経由でMCPサーバーとして動作し、AIエージェントがブランチの競合を確認できます。READMEにはMCPツールの詳細がありません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"sadayamuthu-mergelock": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/sadayamuthu/mergelock:0.1.5"
]
}
}
}
起動コマンドdocker run -i --rm ghcr.io/sadayamuthu/mergelock:0.1.5

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/sadayamuthu/mergelock:0.1.5

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

mergelock

CI Release Homebrew Docker deb/rpm MCP Registry Glama License

git ネイティブのマージゲートです。mergelock check は2つのブランチがマージされる前に比較し、git 自体では検出できない競合を報告します。たとえば、一方のブランチで関数のシグネチャが変更され、もう一方のブランチで古いシグネチャへの呼び出しが追加された場合、一方でシンボルが削除されても、もう一方では引き続き使われている場合、同じ関数が2回書かれている場合などです。

2つのエージェントブランチは git では競合なくマージされますが、mergelock は checkout.ts が古いシグネチャで login() を呼び出していることを報告します

作業ツリーには一切触れません。すべて 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

終了コードを使うと、スクリプトを簡単に作成できます。

コード結果
0clean:検出結果なし
1warnings:警告のみ
2conflict:エラーが少なくとも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つのブランチ、期待される検出結果を含む小さなリポジトリです。

ライセンス

Apache License 2.0

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。