Hi everyone,

We are working actually on an Elixir project which involves several 
subprojects.
I'd rather prefer to think about like several frameworks and one 
application which
uses modules from those frameworks, and so has compile dependencies on them.

So let's say we have *Model* and *Core* frameworks and then *Presentation* 
application.

Now the strange think happens from time to time (not always, this is a 
problem) when
suddenly when we launch mix deps.get we get following message:

Dependencies have diverged:
* model ([email protected]:playrz/model.git) the dependency model in mix.exs 
is overriding a child dependency:
  > In mix.exs: {:model, nil, [git: "[email protected]:playrz/model.git", 
tag: "builds/57", manager: :mix]}
  > In deps/core/mix.exs: {:model, nil, [git: 
"[email protected]:playrz/model.git", tag: "builds/42"]}


However in bitbucket those projects are all correctly tagged, with:

Core is tagged builds/40 in bitbucket,
Core's mix.exs deps:

@common_deps [
    {:model, git: "[email protected]:playrz/model.git", tag: "builds/57"},
    {:exlager, github: "intellicore/exlager", tag: "r1.2"},
    {:logger_lager_backend, "~> 0.0"},
    {:tzdata, "~> 0.5"},
    {:unit_fun, "~> 0.5"},
    {:amnesia, "~> 0.2"},
    {:poison, "~> 2.1", override: :true},  # dep overriden from ecto, where 
it is declared as optional
    {:gproc, "~> 0.5"},
    {:exprof, "~> 0.2"},
    {:eflame, ~r/.*/, git: "https://github.com/proger/eflame.git";, compile: 
"rebar 
compile"},
    {:meck, github: "eproxus/meck", tag: "0.8.2", override: true},
    {:edown, github: "uwiger/edown", tag: "0.7", override: true},
    {:lager, github: "basho/lager", tag: "2.1.0", override: true},
    {:elixometer, github: "intellicore/elixometer"},
    {:ex_machina, "~> 0.6"},
    {:faker, "~> 0.6"}
  ]

  defp deps(:test) do
    [
      {:cobertura_cover, "~> 0.9"}
    ] ++ @common_deps
  end

  defp deps(:docs) do
    [
      {:ex_doc, "~> 0.11", only: :docs},
      {:earmark, "~> 0.2", only: :docs}
    ] ++ @common_deps
  end

  defp deps(_) do
    @common_deps
  end


And mix.exs from Presentation (top-level) app:

  @common_deps [
    {:model, git: "[email protected]:playrz/model.git", tag: "builds/57"},
    {:core, git: "[email protected]:playrz/core.git", tag: "builds/40"},
    {:ex_machina, "~> 0.6"},
    {:faker, "~> 0.6"},
    {:logger_lager_backend, "~> 0.0"},
    {:poison, "~> 2.1", override: true},
    {:gproc, "~> 0.5"},
    {:timex, "~> 1.0"},
    {:erlcloud, "~> 0.13", manager: :rebar3},
    {:meck, github: "eproxus/meck", tag: "0.8.2", override: true},
    {:edown, github: "uwiger/edown", tag: "0.7", override: true},
    {:lager, github: "basho/lager", tag: "2.1.0", override: true}
  ]

  defp deps(:test) do
    [
      {:cobertura_cover, "~> 0.9"},
      {:temp, "~> 0.4"},
      {:exprof, "~> 0.2"},
      {:ex_machina, "~> 0.6"},
      {:faker, "~> 0.6"}
    ] ++ @common_deps
  end

  defp deps(:docs) do
    [
      {:ex_doc, "~> 0.11", only: :docs},
      {:earmark, "~> 0.2", only: :docs}
    ] ++ @common_deps
  end

  defp deps(_) do
    @common_deps
  end




Could someone explain to me how mix deps.get can get msimatched on the tag 
of the model dependency ?
And more importnatly only from time to time.... 

We'd like to use Jenkins automated builds but we have issues finding a 
correct way of handling dependencies.

We've already tried to do mix deps.clean --all, or to completely remove the 
deps and _build directories.

Any clues ?

Thx

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-talk/7f150965-2465-4ce0-a9f6-67cd09c7fcf7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to