Git, the D package manager

Jacob Carlborg via Digitalmars-d digitalmars-d at puremagic.com
Sat Feb 7 06:43:31 PST 2015


On 2015-02-04 23:00, Mike Parker wrote:

> Then you specify a specific version of the library as a dependency,
> rather than a version range.

No, this is not enough. The tool need to automatically track and lock 
the whole dependency graph. Example:

Project A:

"dependencies": {
   "b": "1.0.0"
}

Project B:

"dependencies": {
   "c": ">=1.0.0"
}

Even though you have locked your direct dependencies to a specific 
version doesn't mean that the dependencies have done so. Meaning, you 
can get arbitrary versions of indirect dependencies. You can start 
adding the indirect dependencies as direct dependencies but that defeats 
the point of a package manager.

I have explained this so many times in the Dub forum, why not locking 
the whole graph is a really, really bad idea.

I've experienced this myself many times with Ruby before it got Bundler 
which fixes this.

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list