【问题标题】:How to version an erlang project?如何对 erlang 项目进行版本控制?
【发布时间】:2015-03-08 20:17:50
【问题描述】:

有什么方法可以对 erlang 项目进行版本/标记?

到目前为止,我一直在使用 git 标签来说明我的版本发布,以及我的应用程序配置中的自定义字段(例如 {version, "0.0.1-alpha"})。但是有没有更好的方法来实现这一点?

我正在使用钢筋,我查过但找不到这样的功能。我知道 rebar 可以完美地与 git 标签配合使用,但我还想在我的项目文件随附的配置中说明版本/发布。

我想在我的应用程序中包含那个“package-config”。

干杯。

【问题讨论】:

    标签: erlang package version release rebar


    【解决方案1】:

    Erlang 中存在多个级别的版本:

    • 可以使用-vsn 属性对Erlang 模块进行版本控制。例如,mymodule.erl 文件的顶部可能如下所示:

      -module(mymodule).
      -vsn(1.0).
      ...
      

      如果您不指定-vsn,Erlang 编译器会使用模块文件内容的 MD5 校验和为您生成一个。

    • Erlang 应用程序在其.app 文件中进行版本控制。例如,对于名为myapp 的应用程序,其myapp.app 的顶部可能如下所示:

      {application,myapp,
          [{description,"My Favorite Application"},
          {vsn, "1.2.3"},
          ...
      
    • Erlang 版本也可以进行版本控制,但如何做到这一点取决于您使用什么工具来生成版本。以reltoolrebar 为例,您可以在reltool.config 文件中指定发布版本。例如,对于名为myrel 的版本,其reltool.config 的顶部可能如下所示:

      {sys, [
             {lib_dirs, []},
             {erts, [{mod_cond, derived}, {app_file, strip}]},
             {app_file, strip},
             {rel, "myrel", "1.9",
          ...
      

      {rel, "myrel", "1.9" 行中显示的“1.9”是发布版本号。

      或者,与systools 一起,.script 文件可用于生成.boot 文件以指定如何加载和启动 Erlang 系统,其中包含元组 {script, {ReleaseName, ReleaseVsn}, Actions},其中 ReleaseVsn 指定发布版本。例如,myrel.script 的顶部可能如下所示:

      {script,
       {"myrel","1.9"},
        [{preLoaded,
          [erl_prim_loader,erlang,erts_internal,init,otp_ring0,prim_eval,
           prim_file,prim_inet,prim_zip,zlib]},
         {progress,preloaded},
      ...
      

      您可以自己编写这样的文件,或者更明智地从release resource file 生成带有systools:make_script 的文件,该文件通常具有.rel 后缀,其顶部指定发布版本,如下所示:

      {release, {RelName,Vsn}, {erts, EVsn},
      ...
      

      其中Vsn 是发布版本,EVsn 是发布应该使用的 Erlang 运行时系统 (erts) 的版本。

      对于relx,发布版本的指定与.rel 文件的定义相同。详情请见relx documentation

    因此,Erlang 项目由许多版本化实体组成,其中一些可能在您的控制之下,但其他一些您可能通过其他库/应用程序的依赖项继承,包括来自 Erlang 标准库的那些。

    【讨论】:

    • 为此干杯!你的第三颗子弹正是我想要的。我正在使用其余的,但正如您所提到的,我更多的是寻找项目版本发布标签而不是应用程序级 (*.app.src) 版本控制。
    猜你喜欢
    • 2018-02-16
    • 2019-11-03
    • 2023-02-11
    • 2010-09-13
    • 2017-03-10
    • 2012-09-12
    • 2019-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多