首页 > 解决方案 > 如何在 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

现在,如果我只想要那个版本1.0.0:my_repo可以了。但是,如果我想要任何与 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. 如果没有,我还有什么其他选择?

标签: gitelixirelixir-mixsemantic-versioning

解决方案


有没有办法将-l选项传递给mix.exsdeps 函数?

不是我知道的。

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

我要么提出一个 PR 到mix核心,要么只介绍你自己的Mix.SCM实现,以及现有的gitandpath,这将是一个精确的复制粘贴,Mix.SCM.Git但允许 / 硬编码-l选项。


推荐阅读