Skip to content

Реализовать единый для pvm команд контекст работы с пакетами #2

Open
SkReD opened this issue Mar 25, 2022 · 0 comments

Comments

@SkReD
Copy link
Contributor

SkReD commented Mar 25, 2022

Проблема

Пакеты загружаются либо из файловой системы, либо по git ref либо из файловой системы (объединим эти сущности под названием "путь пакета") и итоговая команда получает списки пакетов из разных модулей, которые не согласованы по пути пакета и можем получить разные экземпляры пакета с одним и тем же именем в кеше, что может привести к некорректной работе логики в местах, где пакет используется как ключ в Map. Можем также незаметно начать работать с пакетами как с одной сущностью, когда по факту это два пакета загруженные по разным путям. Например в случае работы с результатом pkgset affected будем работать с загруженными пакетами из git, а если создадим Repository без указанного ref, то будет работать с состоянием из файловой системы.

Причины неконсистентности

Дефолтный путь пакета может быть либо HEAD либо undefined и разработчик выбирает либо одно, либо другое при написании
Есть взаимное использование модулей с возможностью настроить каждый индивидуально с каким путем пакета он будет работать

Предлагаемое решение

Есть некая точка, состояние которой мы анализируем относительно других точек. Эта точка содержит состояние пакетов, которые будут применены как итоговые в различных системах. Считаем, что эта точка сквозная для вызова pvm и если pvm вносит изменение в состояние проекта, когда эта точка должна измениться, то требуется новый запуск pvm для исполнения в контексте этой новой точки.
Альтернативой должна быть надежная система инвалидации всех внутренних кешей и привязка их к этой точке.

Точка по-умолчанию должна быть сквозной для всех модулей (переменная окружения?) и флаги, ею управляющие, должны быть доступны в каждой команде pvm.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

1 participant