如何在mix.exs中使用具有语义版本控制的Git标记



背景

我们在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

现在,如果我只想要:my_repo中的1.0.0版本,那没关系。但是,如果我想要与1.0.0兼容的任何版本,会发生什么?原始文档似乎没有这个选项标志:

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

问题

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

我对git repos也想要同样的东西。在检查了git文档后,我知道使用-l命令是可能的

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

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

问题

  1. 有没有办法将-l选项传递给mix.exsdeps函数
  2. 如果没有,我还有什么其他选择

是否有方法将-l选项传递给mix.exsdeps函数?

我不知道。

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

我要么向mix核心提出PR,要么只引入您自己的Mix.SCM实现,以及现有的gitpath,这将是Mix.SCM.Git的精确复制粘贴,但允许/硬编码-l选项。

最新更新