Какие решения есть для определения версий библиотек?
Всем привет! Дано: продукт, который зависит от определенной библиотеки. Библиотека постоянно обновляется, но одна и та же часть кода сначала попадает в продукт (чтобы не ждать релиза библиотеки) и параллельно - в библиотеку. С выходом новой версии библиотеки те части кода, которые уже в ней имеются, удаляются из продукта. Задача: сделать механизм, который наиболее прозрачно будет сообщать о частях кода, которые надо удалить после переезда на новую версию библиотеки.
Как я это вижу: берем версию библиотеки, проверяем в нужных местах и выводим в консоль сообщение о необходимости удаления этих частей кода, если он уже есть в библиотеке. Для этого нужно где-то хранить версию библиотеки, чтобы ее можно было проще всего вытянуть.
У меня естественно назревает "велосипед", но хотелось бы для начала поискать готовые решения. Описанный мною юзкейс вроде как достаточно тривиальный, наверняка кто-то что-то уже сделал.
Код на python, в качестве CVS используется hg.
Всем спасибо!
sim3x: А, я кажется понял, что вы предлагаете. Ну есть несколько причин, по которым мы не можем это сделать. Одна из них - версионность библиотеки, некоторые фичи ломают обратную совместимость. Это не rolling-release схема. И не один проект завязан на эту либу.
Не совсем понимаю, как это будет работать. Например, я проинсталлировал библиотеку нужной версии, на этом функция npm или composer заканчивается, а мне нужно в коде проекта понять, какая версия библиотеки сейчас используется и какие части кода нужно пометить, как уже присуствующие в либе. Как мне тут менеджер пакетов поможет?
> Код на python
Но даже если брать js, то вы предлагаете читать версию из json? Я спрашивал про готовые решения) Мысли о велосипеде и у меня возникали)
Павел Гольцев: верно, питон, не представляю как он в моей ленте оказался, не подписан на питон. Но вообще там написаны версии и старые он чудесно сам сносит.
Задача сводится к детектированию дублирующихся участков кода. Сравнивать придется корень проекта и site-packages/your_library_name. В качестве тулзы можно попробовать https://sourceforge.net/projects/clonedigger/. Кроме того, процесс можно автоматизировать, прикрутив CI.
Задача - не искать копипаст, потому как его может быть в разных местах много, (тесты, например), а помечать код вручную, и отображать при запуске проекта сообщения. Но, как вариант, ваше предложение тоже имеет право на жизнь, спасибо.
Можно воспользоваться Requirements Files. В таких файлах можно указать точную версию, или старше указанной или не старше указаной. А можно вообще версий не указывать, а просто указать имена пакетов и тогда будут ставиться только самые последнии версии.
Это опять предложение, связанное с менеджером пакетов, который никак не решает проблему runtime определения участков кода, которые нужно выпилить. Я описал ситуацию к 1 комментарию (там тоже человек предлагал использовать npm, composer).