-
Notifications
You must be signed in to change notification settings - Fork 519
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Global resolver strategy option #1160
Conversation
|
on one hand I like the symmetry, but do we really need this extra mode? |
|
Actually I am. As a matter of fact, I can't achieve what I want without this. Some of my dependencies are both direct and transitive and unless I have a global strategy, those specific dependencies always get the latest version, regardless the |
|
ok that makes sense. |
|
Something broke. 2.16.0 finds resolution for https://github.com/ctaggart/coreclr-demo deps file: lock file: but paket 2.17.0-alphaxxx fails to resolve. |
|
I can't repro. Is there an error message? What exactly are you trying to do? |
|
no. the issue is the resolver doesn't find a resolution. (maybe it will eventually but I stopped after 10min) I'm trying to do paket update on the coreclr sample repo. As I said 2.16 finds a resolution (in under a minute) |
|
This is weird. Here's my output using 2.17.0-alpha002: |
|
mhm. ok. then I guees I need to check what's wrong here. thanks for testing 2015-10-23 13:54 GMT+02:00 Marcio Rinaldi notifications@github.com:
|
|
No problem. Did you happen to run it in verbose mode? Does it happen every time you run it? |
|
Just to verify my findings could you please try it again. Maybe like 5 times?
And it seems we have results for both sources and whatever returns first decides if we find a resolution. |
|
with the changes in #1163 we lose a bit of perf, but it seems to always resolve correctly. |
Currently, Paket uses the Max strategy and you can override it per package using the
!modifierThis PR adds a new setting to specify the default resolver strategy for the group.
Now, you can set the default strategy either by doing
strategy minorstrategy maxinpaket.dependencies. If no strategy is set, it'll continue using the Max by default.In addition, a new strategy modifier has been introduced, similar to the
!modifier, the new modifier is the@, like in the example below:This makes all transitive packages of FAKE resolve using the Max strategy, albeit the global strategy is Min.
Although improbable, to resolve conflicts between strategy modifiers (
!and@), it'll compare depth of the requirements in conflict and if both are equal, it'll select the default strategy. In case no default strategy is set, it'll use Max by default.In case this PR is merged, I'll begin working on the docs.