2015-08-27 3 views
4

Как вы выполняете контроль версий в Julia, если хотите использовать ее в рабочей среде. То есть большинство пакетов Julia и сама Julia имеют номер 0.3.10 или аналогичный номер версии, поэтому вы должны быть готовы к крупным изменениям интерфейса в ближайшем будущем, и особенно когда первая цифра меняется с 0 на 1.Управление версией Julia в рабочей среде

Мой пакет статус выглядеть примерно так:

julia> Pkg.status() 
4 required packages: 
- DataFrames     0.6.9 
- Gadfly      0.3.13 
- Jewel       1.0.5 
- Mongo       0.1.3 
44 additional packages: 
- ArrayViews     0.6.3 
- BinDeps      0.3.15 
- Calculus      0.1.10 
- Codecs      0.1.4 
- Color       0.4.7 
- Compat      0.6.0 
- Compose      0.3.13 
- Contour      0.0.7 
- DataArrays     0.2.17 
- DataStructures    0.3.12 
etc... 

рекомендуется использовать Pkg.update() часто, так что вы имеете самые последние патчи на все ваши пакеты.

Если вам необходимо обновить пакет из-за этих исправлений или вам нужно использовать новую функцию, вы можете сломать свой код, а также могут быть зависимости между различными пакетами.

Julia может быть достаточно зрелым языком, который не имеет серьезных проблем с контролем версий, но я чувствую необходимость опроса мнения пользователей Julia об их опыте.

ответ

7

В производственной среде вы не должны часто использовать Pkg.update() или, по крайней мере, не испытывать тестирование в непроизводственной среде. Это справедливо для каждой упаковочной системы, а не только для Юлии. Для Джулии, в частности, я также рекомендую установить набор версий, которые будут работать для вас, а затем использовать соответствующие нижние и верхние границы в вашем файле REQUIRE.

Например, предположим, что JuMP 0.9.2 хорошо работает для меня, равно как и Gadfly 0.4.2. Я бы, вероятно, сделать что-то вроде следующего в ~/.julia/v0.3/REQUIRE:

JuMP 0.9.2 0.10 
Gadfly 0.4.2 0.5 

Таким образом, если я бегу Pkg.update() я буду получать 0.9.3 и 0.4.3, если они выйдут, но не будет автоматически обновлен до JuMP 0.10. Конечно, это работает только в том случае, если вы доверяете сторонникам пакетов, чтобы использовать номера версий разумно, что является серьезной проблемой, особенно когда они до 1.0.

4

Пакет DeclarativePackages.jl (https://github.com/rened/DeclarativePackages.jl) позволяет точно указать, какие версии каждого пакета вы хотите использовать для каждого проекта: он запускает Юлию именно с этими версиями этих пакетов. Похоже, это может быть то, что вы ищете.

+0

Хм. Это звучит что-то действительно полезное, видя, как все Джулия упаковывает страдания в качестве нового пользователя Джулии. Рано или поздно создатели Julia должны начать думать о серьезной системе управления пакетами, системе, которую люди начали писать для различных javascript-библиотек/фреймворков, например. – Ferenc

+0

Не слышали о «страшном пакете». 'Pkg' работает во многом так, как' npm' и 'pip' во многих отношениях, причем многие различия являются сознательными решениями. – IainDunning

Смежные вопросы