You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Having now used the last few versions of Glide with some big projects like Kubernetes and Deis, I am discovering that nesting dependencies in deep vendor trees is a really horrible experience for developers. In one case, we saw a particular dependency download 22 times (Docker inside of one of the Deis projects). In several other cases, we are seeing vendored paths cause difficult to resolve package interdependency issues (two packages use a common third package, but because they have different vendor directories, the common paths are broken)
So I am working on a complete refactor. We used to do this:
We will not be collapsing all dependencies to the top vendor directory:
vendor/
|
|- github.com/foo/bar
|- github/foo/baz
This will give all dependencies the same ancestry chain.
Right now, we do not have a solution for the case where two packages have significantly different versions of the same dependency. The current strategy is as follows:
First dependency to declare that it needs a Ref wins
Any subsequent dependency that declares the same package, but a different Ref, will generate a warning
If you want to explicitly control, you should declare the package in the top glide.yaml
I'm still working on the initial version, but for projects like Kubernetes, this shaves over 45 minutes off of the initial glide up time (most being network time, so YMMV).
The text was updated successfully, but these errors were encountered:
I am deprecating the --import flag. This will now be the default.
I am deprecating the --delete-flatten flag, since it doesn't do anything in this context.
I am not sure whether we need to set up an option to allow only shallow loops through the repo (e.g. a --no-recursive option). If we want that, I can add it.
Having now used the last few versions of Glide with some big projects like Kubernetes and Deis, I am discovering that nesting dependencies in deep vendor trees is a really horrible experience for developers. In one case, we saw a particular dependency download 22 times (Docker inside of one of the Deis projects). In several other cases, we are seeing vendored paths cause difficult to resolve package interdependency issues (two packages use a common third package, but because they have different vendor directories, the common paths are broken)
So I am working on a complete refactor. We used to do this:
We will not be collapsing all dependencies to the top vendor directory:
This will give all dependencies the same ancestry chain.
Right now, we do not have a solution for the case where two packages have significantly different versions of the same dependency. The current strategy is as follows:
glide.yaml
I'm still working on the initial version, but for projects like Kubernetes, this shaves over 45 minutes off of the initial
glide up
time (most being network time, so YMMV).The text was updated successfully, but these errors were encountered: