如何在mix.exs中使用带有语义版本控制的Git标签?

时间:2018-11-02 11:14:52

标签: git elixir mix semantic-versioning

背景

我们在git中有一个使用标记的私有存储库。在我们的mix.exs中,我们有以下内容:

  defp deps do
    [
      { :plug,    "~> 1.0"  },
      { :my_repo, git: "git@github.com:my_company/my_repo.git", tag: "1.0.0"  }
    ]
  end

现在,如果我只想要1.0.0中的:my_repo版本,那就很好了。 但是,如果我想要任何与1.0.0兼容的版本会怎样?原始文档似乎对此没有选项标记:

https://hexdocs.pm/mix/Mix.Tasks.Deps.html

问题

这就是{ :plug, "~> 1.0" },中发生的事情。在这里,我说“ 给出与此版本兼容的任何1.X版本”。

我想要git repos同样的东西。在检查git docs之后,我知道可以使用-l命令:

https://git-scm.com/book/en/v2/Git-Basics-Tagging

git tag -l "1.8.5*"将返回与1.8.5兼容的所有版本。

问题

  1. 是否可以将-l选项传递给mix.exs deps函数?
  2. 如果没有,我还有什么其他选择?

1 个答案:

答案 0 :(得分:1)

  

是否可以将-l选项传递给mix.exs deps函数?

我不知道。

  

如果没有,我还有什么其他选择?

我会建议对mix的核心进行公关,或者只是介绍您自己的Mix.SCM实现以及existing git and path,这将是对Mix.SCM.Git的精确粘贴。但允许/硬编码-l选项。