Как запретить Pkg.jl удерживать состояние за пределами Project.toml и Manifest.toml - PullRequest
0 голосов
/ 09 мая 2019

Менеджер пакетов Джулии Pkg.jl великолепен, но иногда кажется, что он хранит состояние за пределами записей в Project.toml или Manifest.toml, и мне интересно, как это происходит / как предотвратить это.

Совсем недавно я столкнулся с этой проблемой при изменении одной из моих зависимостей, которые я ранее использовал для тега master (добавлен в режиме пакета через add DESPOT#master) и хотел использовать его в режиме dev (например, в режиме пакета). runnign dev ARDESOT). Однако пакет почему-то не изменился на dev-режим, поэтому я попытался удалить его. После удаления он исчез из Project.toml и Manifest.toml (что является ожидаемым поведением). Однако перезапуск REPL и запуск Pkg.status() по-прежнему показывает запись для удаленного пакета: enter image description here enter image description here

Итак, я делаю вывод, что он сохраняет состояние за пределами Manifest.toml и Project.toml. Где хранится эта информация? Можно ли как-то принудительно его сбросить? Запуск сборщика мусора Pkg не помогает. Это случилось со мной с несколькими пакетами сейчас, это только самый последний пример.

1 Ответ

1 голос
/ 09 мая 2019

Я думаю, что это просто путаница в том, как работает Pkg.status(). Я предполагаю, что ваш проект находится в репозитории git? В этом случае Pkg.status() показывает разницу с последним коммитом в этом хранилище, а не абсолютный статус.

Однако при перезапуске REPL и запуске Pkg.status () по-прежнему отображается запись для удаленного пакета

Обратите внимание, что оно отображается как удалено , обратите внимание на красный текст, а также - перед именем пакета. Это означает, что по сравнению с последним коммитом вашего репо этот пакет был удален.

Где хранится эта информация?

В последнем коммите git.

...