Файл фиксации версий deps.lock.json¶
Путь: .odpm/deps.lock.json. Фиксирует ревизии git (и отпечатки для file://) для платформы, зависимостей и при необходимости разрабатываемого проекта. Файл коммитят в git, как lock-файлы в экосистеме Node или Python.
Команды¶
| Действие | Команда |
|---|---|
| Пересчитать фиксацию | odpm --update-lock --skip-start |
Пересчитать deps.lock и записать locks.git (v2, developer) |
odpm --update-lock --sync-manifest-locks --skip-start |
| Подготовка по существующему lock | odpm --skip-start |
| Только пересоздать Docker-файлы без git | odpm --no-git-update --skip-start (lock не используется) |
После изменения dependencies, oca_dependencies.txt или вложенных odpm.json в зависимостях — обновите lock и закоммитьте.
Приоритет правил¶
--no-git-update → --update-lock → чтение lock → конец ветки / дата nightly.
Два источника lock (v1 flat vs v2 nested)¶
Формат odpm.json |
Канонический источник SHA | Роль .odpm/deps.lock.json |
|---|---|---|
v1 flat (без manifest_schema: 2) |
.odpm/deps.lock.json |
Единственный источник; коммитить в git |
v2 nested с непустым locks.git |
locks.git в odpm.json |
Операционная копия для tooling и legacy-путей |
На v2 DepsLockManager читает пины из locks.git. Файл .odpm/deps.lock.json остаётся на диске после migrate и при --update-lock.
Где править SHA:
- v1 — редактируйте
.odpm/deps.lock.jsonили пересчитайтеodpm --update-lock --skip-start. - v2 — редактируйте
locks.gitвodpm.json(канон); затемodpm --update-lock --skip-start, чтобы синхронизировать.odpm/deps.lock.json.
Opt-in dual-write (v2, developer): по умолчанию --update-lock пишет только .odpm/deps.lock.json. Чтобы также обновить locks.git в odpm.json, добавьте --sync-manifest-locks (только с --update-lock, сценарий developer). Без флага odpm plan предупреждает, что manifest не изменится.
Расхождение источников: если locks.git и .odpm/deps.lock.json различаются, odpm plan показывает warning, а шаг git.lock_verify пишет warning в лог. Канон — locks.git; --update-lock выравнивает файл на диске.
Содержимое (схема версии 1)¶
platform— репозиторий платформы Odoo или форка;developing— репозиторий разрабатываемого проекта;dependencies— полный разрешённый граф (включая транзитивные OCA).
У каждой записи: url, commit, при необходимости branch, kind (git или file).
В lock записываются раскрытые URL и пути (после подстановки ${VAR} в manifest). Чтение существующего lock-файла подстановку не выполняет.
Локальный каталог file://¶
Для платформы по file:// в поле commit хранится отпечаток содержимого каталога, а не хеш git. Для общей работы команды и сборки надёжнее удалённый репозиторий.
Режим разработчика¶
Lock применяется к платформе и зависимостям, но не принуждает состояние git разрабатываемого проекта — ветка и коммиты остаются под контролем разработчика. Поле developing в lock всё равно записывается при --update-lock и строго проверяется в сценариях ci и server.
См. роль координатора.