Skip to content

Upstream Repo Sync

The platform monorepo was built by subtree-merging source repos. Until the migration is complete, changes land in the source repos and must be cherry-picked here.

Remotes

Remote URL Monorepo prefix Method
inspect-action git@github.com:METR/inspect-action.git hawk/ cherry-pick -X subtree=hawk
middleman git@github.com:metr-middleman/middleman-server.git middleman/ cherry-pick -X subtree=middleman
datadog git@github.com:METR/datadog.git datadog/ cherry-pick -X subtree=datadog

Note: The mp4-deploy remote (which synced Terraform into core/, spacelift/, k8s/) has been retired. All infrastructure is now managed by Pulumi in infra/.

Setup (first time only)

git remote add inspect-action git@github.com:METR/inspect-action.git
git remote add middleman git@github.com:metr-middleman/middleman-server.git
git remote add datadog git@github.com:METR/datadog.git

Sync Procedure

1. Fetch all remotes

git fetch inspect-action main && git fetch middleman main && git fetch datadog main

2. Find the last synced commit for each repo

Match the commit message of the last cherry-picked commit against the remote's history:

git log --oneline <remote>/main | grep -F "<last synced commit subject>"

3. Cherry-pick (inspect-action, middleman, datadog)

git cherry-pick -X subtree=hawk <last_synced_hash>..inspect-action/main
git cherry-pick -X subtree=middleman <last_synced_hash>..middleman/main
git cherry-pick -X subtree=datadog <last_synced_hash>..datadog/main

Conflict Resolution

Situation Resolution
File was removed in monorepo restructure git rm <file> then git cherry-pick --continue
Commit only touches removed files Skip it: git cherry-pick --skip
Lock file conflicts (uv.lock, pnpm-lock.yaml) Take theirs: git checkout --theirs <file> && git add <file>