d2fn/gopack — pull request #44 by calavera (2013-10-04 00:25:37+00:00)
Title: Manage duplicated transitive dependencies

There are two improvements here, maybe quite controversial though:

- [x] Do not install duplicated dependencies. So if you have this gopack.config:

```toml
[deps.foo]
import = "github.com/calavera/foo"
commit = "asdf"

[deps.bar]
import = "github.com/calavera/bar"
```

but the dependency bar has this gopack.config:

```toml
[deps.foo]
import = "github.com/calavera/foo"
branch = "qwert"
```

Gopack will fail because the checkout specs are incompatible. It won't try to find out if a commit is into a branch or anything similar because there are too many corner cases for each version control system. I rather fail fast and inform the user.

- [x] Use semantic versioning to compare dependency tags. So if you have this gopack.config:

```toml
[deps.foo]
import = "github.com/calavera/foo"
tag = "v1.1.1"

[deps.bar]
import = "github.com/calavera/bar"
```

but the dependency bar has this gopack.config:

```toml
[deps.foo]
import = "github.com/calavera/foo"
tag = "v1.2.1"
```

Gopack will fail because those versions are not semantically compatible.

/cc @d2fn