【问题标题】:What does the alphanumeric value mean in an elixir mix lock file?长生不老药混合锁定文件中的字母数字值是什么意思?
【发布时间】:2020-08-22 20:28:38
【问题描述】:

您好,我很好奇“d42e20054116c49d5242d3ff9e1913acccebe6015f449d6e312a5bc160e79a62”在上面的锁定文件切片中代表什么。我试过通读 mix 的源代码,感觉它和 git 有关系,但我无法准确定位。

mix源码中的锁相关模块有读写锁方法(https://github.com/elixir-lang/elixir/blob/5984c6cc29a41d5bc78d49427730c8786d75e2c9/lib/mix/lib/mix/dep/lock.ex#L13),但对它处理的map没有多说。测试似乎也没有暗示这个值代表什么:https://github.com/elixir-lang/elixir/blob/9e40b8f786625b2f036ce9c2467cd0a8ade35ce6/lib/mix/test/mix/dep/lock_test.exs

我认为它可能是一个 git commit 哈希(由我的机器在本地生成或从依赖项的存储库中提取。我在这两个地方都没有找到该哈希。

感谢任何帮助。谢谢!

【问题讨论】:

    标签: elixir


    【解决方案1】:

    这是一个散列,用于依赖收敛过程。粗略地说,Mix.Dep.Converger 构建了一个 :digraph 的依赖关系,并使用拓扑排序来确定依赖关系是否已经发散。

    您将无法在 Elixir/Mix 源代码中找到它,因为它是 delegating to the external converger,这取决于它的依赖类型。对于:hex类型的依赖,remote是Hex.RemoteConverger

    也就是说,这个值完全由Hex.RemoteConverger 负责,mix 对此一无所知。如果您想为mix 提供另一个依赖源,您可以实现@behaviour Mix.RemoteConverger,并且在依赖收敛过程中,您的转换器实现将使用您想要的任何参数调用。

    【讨论】:

    猜你喜欢
    • 2019-07-30
    • 2015-12-03
    • 2021-09-04
    • 1970-01-01
    • 2017-10-21
    • 2018-05-29
    • 1970-01-01
    • 2015-02-03
    • 2016-02-01
    相关资源
    最近更新 更多