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-deployremote (which synced Terraform intocore/,spacelift/,k8s/) has been retired. All infrastructure is now managed by Pulumi ininfra/.
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¶
2. Find the last synced commit for each repo¶
Match the commit message of the last cherry-picked commit against the remote's history:
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> |