You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Пакеты загружаются либо из файловой системы, либо по git ref либо из файловой системы (объединим эти сущности под названием "путь пакета") и итоговая команда получает списки пакетов из разных модулей, которые не согласованы по пути пакета и можем получить разные экземпляры пакета с одним и тем же именем в кеше, что может привести к некорректной работе логики в местах, где пакет используется как ключ в Map. Можем также незаметно начать работать с пакетами как с одной сущностью, когда по факту это два пакета загруженные по разным путям. Например в случае работы с результатом pkgset affected будем работать с загруженными пакетами из git, а если создадим Repository без указанного ref, то будет работать с состоянием из файловой системы.
Причины неконсистентности
Дефолтный путь пакета может быть либо HEAD либо undefined и разработчик выбирает либо одно, либо другое при написании
Есть взаимное использование модулей с возможностью настроить каждый индивидуально с каким путем пакета он будет работать
Предлагаемое решение
Есть некая точка, состояние которой мы анализируем относительно других точек. Эта точка содержит состояние пакетов, которые будут применены как итоговые в различных системах. Считаем, что эта точка сквозная для вызова pvm и если pvm вносит изменение в состояние проекта, когда эта точка должна измениться, то требуется новый запуск pvm для исполнения в контексте этой новой точки.
Альтернативой должна быть надежная система инвалидации всех внутренних кешей и привязка их к этой точке.
Точка по-умолчанию должна быть сквозной для всех модулей (переменная окружения?) и флаги, ею управляющие, должны быть доступны в каждой команде pvm.
The text was updated successfully, but these errors were encountered:
Проблема
Пакеты загружаются либо из файловой системы, либо по git ref либо из файловой системы (объединим эти сущности под названием "путь пакета") и итоговая команда получает списки пакетов из разных модулей, которые не согласованы по пути пакета и можем получить разные экземпляры пакета с одним и тем же именем в кеше, что может привести к некорректной работе логики в местах, где пакет используется как ключ в Map. Можем также незаметно начать работать с пакетами как с одной сущностью, когда по факту это два пакета загруженные по разным путям. Например в случае работы с результатом pkgset affected будем работать с загруженными пакетами из git, а если создадим Repository без указанного ref, то будет работать с состоянием из файловой системы.
Причины неконсистентности
Дефолтный путь пакета может быть либо HEAD либо undefined и разработчик выбирает либо одно, либо другое при написании
Есть взаимное использование модулей с возможностью настроить каждый индивидуально с каким путем пакета он будет работать
Предлагаемое решение
Есть некая точка, состояние которой мы анализируем относительно других точек. Эта точка содержит состояние пакетов, которые будут применены как итоговые в различных системах. Считаем, что эта точка сквозная для вызова pvm и если pvm вносит изменение в состояние проекта, когда эта точка должна измениться, то требуется новый запуск pvm для исполнения в контексте этой новой точки.
Альтернативой должна быть надежная система инвалидации всех внутренних кешей и привязка их к этой точке.
Точка по-умолчанию должна быть сквозной для всех модулей (переменная окружения?) и флаги, ею управляющие, должны быть доступны в каждой команде pvm.
The text was updated successfully, but these errors were encountered: