fsprojects / Paket

A dependency manager for .NET with support for NuGet packages and Git repositories.
https://fsprojects.github.io/Paket/
MIT License
2.02k stars 523 forks source link

Simplify the update process #1312

Closed alexeyzimarev closed 8 years ago

alexeyzimarev commented 8 years ago

Currently, requesting to update one nuget package initiates a lengthy process for all packages (not sure why is that). In a project with tens of packages this takes significantly longer time than by using nuget package manager, which is frustrating. For internal packages that change often this creates issues for developers that need to update them often.

forki commented 8 years ago

IIRC nuget doesn't recompute the whole dependency tree and this allows to introduce conflicts (in very rare cases). We don't want to go that route in paket.

Usually updating a single package should still be relatively fast since we "soft pin" most dependencies and this should keep traffic low. But there might be still some edge case where paket isn't smart enough yet. We would need good samples to reproduce that.

alexeyzimarev commented 8 years ago

Doesn't paket already have the whole dependency tree in paket.lock and just need to fetch new dependencies from the package that is being updated, fix the lock file accordingly and have the tree ready?

forki commented 8 years ago

yes. in most cases.

but the new updated version might bring in new requirements that break the whole dependency graph. these things exist in the real world. We need to recompute then. The strange things is: usally (if nothing important changes) the process is smart and very fast. So it must find something strange in your case and recompute too much.

alexeyzimarev commented 8 years ago

$ .paket\paket update
Paket version 2.27.14.0
Resolving packages for group Main:

2 minutes, 3 seconds - ready.

forki commented 8 years ago

but why did you run update? I thought you changed only one package?

so try to run "paket update nuget X"

forki commented 8 years ago

or what is the process you want to do?

alexeyzimarev commented 8 years ago

$ .paket\paket update nuget Services.Base
Paket version 2.27.14.0
Updating Services.Base in C:\Dev\Worker\Worker.Services.Customer\src\paket. oup Main
Resolving packages for group Main:

1 minute, 19 seconds - ready.

forki commented 8 years ago

looks like your packages are all on nuget,org. Can you send me the paket.depedencies and lock files? Then I might be able to look deeper

alexeyzimarev commented 8 years ago

Unfortunately those are on myget private feed:

Services.Base 0.1.0-ci0007 Services.DataAccess 0.2.0-unstable0013 Services.DataAccess.InMemory 0.2.0-unstable0013 EventSourcing 2.0.0-unstable0052 EventSourcing.EventStore 2.0.0-beta0037 EventSourcing.Subscriptions 2.0.0-beta0009 EventSourcing.Testing 2.0.0-unstable0052

alexeyzimarev commented 8 years ago

I will figure something out

forki commented 8 years ago

I improved the update performance. Can you please retry and tell me if things improved for you? And please run the update twice since we now cache more than before.

forki commented 8 years ago

ping

alexeyzimarev commented 8 years ago

Sorry. We are using paket in lots of projects and I executed the update many times with all recent versions, it works perfectly fine.