ExDoc:获取与私有存储库一起使用的源链接

ExDoc: getting source links working with private repository

我正在尝试为我的项目生成文档。

我已将 {:ex_doc, "~> 0.16", only: :dev, runtime: false} 添加到我的 deps,将 source_url 设置到我的存储库并 运行 mix docs.

我正在使用 Github Enterprise,所以我的设置是这样的:source_url: "https://my.private.repo/adam/projname"

但是,在生成的文档中,所有指向源代码的 link 都直接指向 https://my.private.repo/adam/projname 而不是相关文件和行号。

我想做的一个例子:

https://hexdocs.pm/ex_doc/Mix.Tasks.Docs.html

本文件右上角的linklink到https://github.com/elixir-lang/ex_doc/blob/v0.18.3/lib/mix/tasks/docs.ex#L1

在我生成的文档中,每个 link 只是 link 到 https://my.private.repo/adam/projname

我试过将 source_ref 设置为 master,但这没有任何区别。

如何让 ExDoc 生成正确的特定 link 源代码?

这是我的 mix.exs 文件的简化版本:

defmodule ProjectName.MixProject do
  use Mix.Project

  def project do
    [
      app: :project_name,
      version: "0.1.0",
      elixir: "~> 1.6",
      deps: deps(),

      # Docs
      name: "ProjectName",
      source_url: "https://my.private.repo/adam/projname"
    ]
  end
end

ex_doc 只会在您使用以下域之一作为 source_url 时自动确定在哪里可以找到文件。 ex_docs source

  • github.com
  • bitbucket.com
  • gitlab.com

在域不同的情况下,您必须在 mix.exs 文件的 docs 部分提供 [​​=16=]

  def project do
    [
      app: :test_exdoc,
      version: "0.1.0",
      elixir: "~> 1.7-dev",
      start_permanent: Mix.env() == :prod,
      source_url: "https://yourprivate-repo.com/adam/projname",
      deps: deps(),
      docs: [
        source_url_pattern: "https://yourprivate-repo.com/adam/projname/blob/master/%{path}#L%{line}"
      ]
    ]
  end