Julia版本控制在生产环境中

时间:2015-08-27 16:35:16

标签: version-control julia

如果要在生产环境中使用它,如何在Julia中进行版本控制。也就是说,大多数Julia软件包和Julia本身都有0.3.10或类似版本号,因此您应该为(近)未来的主要接口更改做好准备,特别是当第一个数字从0翻转到1时。 / p>

我的包裹状态如下所示:

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用户对他们的体验进行评论。

2 个答案:

答案 0 :(得分:7)

在生产环境中,您不应经常使用Pkg.update(),或者至少在没有首先在非生产环境中进行测试时使用REQUIRE。这对每个包装系统都是如此,而不仅仅是朱莉娅。 特别是对于Julia,我还建议您建立一组适合您的版本,然后在JuMP文件中使用适当的下限和上限。

例如,假设~/.julia/v0.3/REQUIRE 0.9.2对我来说效果很好,就像Gadfly 0.4.2一样。我可能会在JuMP 0.9.2 0.10 Gadfly 0.4.2 0.5 中执行以下操作:

Pkg.update()

这样,如果我运行0.9.3,我会得到0.4.3JuMP 0.10如果它们出来,但我不会自动升级到1.0。当然,这只有在你认为软件包维护者明智地使用版本号时才有效,这是一个严重的问题,特别是当它们出现在$products = array("prd_type"=> "prd","code"=>58,"stext"=>"Magnum Frame"); $colors = array(); $colors[] = array("prd_type"=> "color","code"=>60,"stext"=>"Pink"); $colors[] = array("prd_type"=> "color","code"=>61,"stext"=>"Red"); $colors[] = array("prd_type"=> "color","code"=>62,"stext"=>"Black"); $sizes = array(); $sizes[] = array("prd_type"=> "size","code"=>70,"stext"=>"M"); $sizes[] = array("prd_type"=> "size","code"=>71,"stext"=>"S"); $sizes[] = array("prd_type"=> "size","code"=>72,"stext"=>"XL"); $models = array(); $models[] = array("prd_type"=> "model","code"=>80,"stext"=>"Xmall"); $models[] = array("prd_type"=> "model","code"=>81,"stext"=>"Xtra"); $models[] = array("prd_type"=> "model","code"=>82,"stext"=>"Xcode"); 之前时。

答案 1 :(得分:4)

DeclarativePackages.jl包(https://github.com/rened/DeclarativePackages.jl)允许您准确指定要为每个项目使用的每个包的哪个版本:它启动Julia以及那些可用包的版本。这听起来像是你正在寻找的东西。