FubuMvcArchive / ripple

Super charged dependency management with Nuget without the merge hell
http://fubuworld.com/ripple
Other
45 stars 35 forks source link

ripple install in Classic Mode will result in invalid HintPath #237

Closed agross closed 10 years ago

agross commented 10 years ago

I'm just trying to wrap my head around ripple. I think I like the concepts, but I'm unclear how it is supposed to work, especially with floating vs fixed versions. I'd appreciate if you would update the docs to include more details about:

Anyway, I cloned DarthFubuMVC/rippletemplate@09a97da and added an empty ConsoleApplication1 project inside src and did some experiments:

Installing floating dependency

>ripple install nunit -m float -p ConsoleApplication1
Classic Mode Detected
Classic Mode Detected
Install nunit to Solution fubucore
* Analyzing nunit

============================================================================
NugetPlan:
============================================================================
     ** Steps
        * InstallSolutionDependency     Install nunit,2.6.3.0 to solution
        * InstallProjectDependency      Install nunit to ConsoleApplication1

Exploding to d:\Users\agross\Downloads\rt\src\packages\NUnit
HintPath changed:  to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll
Updated reference for d:\Users\agross\Downloads\rt\src\ConsoleApplication1\ConsoleApplication1.csproj to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll
Writing changes to d:\Users\agross\Downloads\rt\src\ConsoleApplication1\ConsoleApplication1.csproj

That downloads NUnit to src\packages\NUnit\, but references ..\packages\NUnit.2.6.3.0\ in the csproj. Details here: agross/rippletemplate@9c3a90e.

Installing fixed dependency

>ripple install nunit -m fixed -p ConsoleApplication1
Classic Mode Detected
Classic Mode Detected
Install nunit to Solution fubucore
* Analyzing nunit,Fixed

===============================================================================
NugetPlan:
===============================================================================
     ** Steps
        * InstallSolutionDependency     Install nunit,2.6.3.0,Fixed to solution
        * InstallProjectDependency      Install nunit to ConsoleApplication1

Exploding to d:\Users\agross\Downloads\rt\src\packages\NUnit
HintPath changed:  to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll
Updated reference for d:\Users\agross\Downloads\rt\src\ConsoleApplication1\ConsoleApplication1.csproj to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll
Writing changes to d:\Users\agross\Downloads\rt\src\ConsoleApplication1\ConsoleApplication1.csproj

Same issue as above. Details here: agross/rippletemplate@90e5d1e.

I remember that I was able to "force" a version number in the path to the NUnit package, what I don't remember is how. I'll add it here if I manage to reproduce.

Help would be very much appreciated!

jeremydmiller commented 10 years ago

This wasn't explanatory enough, or you didn't find it: http://fubuworld.com/ripple/gettingstarted/concepts/

"Fixed" --> use this exact version every time, don't update unless I explicitly tell you to update this particular nuget "Floating" --> use the latest version of this nuget when ripple restores. We use this for internal feeds between related repositories

On Nov 4, 2013, at 7:50 AM, Alexander Groß notifications@github.com wrote:

I'm just trying to wrap my head around ripple. I think I like the concepts, but I'm unclear how it is supposed to work, especially with floating vs fixed versions. I'd appreciate if you would update the docs to include more details about:

which paths should be expected (including or excluding version numbers) what "Classic Mode detected" means (it sounds scary for the novice user - is it something I should get rid of - if so, how? Anyway, I cloned DarthFubuMVC/rippletemplate@09a97da and added an empty ConsoleApplication1 project inside src and did some experiments:

Installing floating dependency

ripple install nunit -m float -p ConsoleApplication1 Classic Mode Detected Classic Mode Detected Install nunit to Solution fubucore

  • Analyzing nunit

NugetPlan:

 ** Steps
    * InstallSolutionDependency     Install nunit,2.6.3.0 to solution
    * InstallProjectDependency      Install nunit to ConsoleApplication1

Exploding to d:\Users\agross\Downloads\rt\src\packages\NUnit HintPath changed: to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll Updated reference for d:\Users\agross\Downloads\rt\src\ConsoleApplication1\ConsoleApplication1.csproj to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll Writing changes to d:\Users\agross\Downloads\rt\src\ConsoleApplication1\ConsoleApplication1.csproj That downloads NUnit to src\packages\NUnit\, but references ..\packages\NUnit.2.6.3.0\ in the csproj. Details here: agross/rippletemplate@9c3a90e.

Installing fixed dependency

ripple install nunit -m fixed -p ConsoleApplication1 Classic Mode Detected Classic Mode Detected Install nunit to Solution fubucore

  • Analyzing nunit,Fixed

NugetPlan:

 ** Steps
    * InstallSolutionDependency     Install nunit,2.6.3.0,Fixed to solution
    * InstallProjectDependency      Install nunit to ConsoleApplication1

Exploding to d:\Users\agross\Downloads\rt\src\packages\NUnit HintPath changed: to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll Updated reference for d:\Users\agross\Downloads\rt\src\ConsoleApplication1\ConsoleApplication1.csproj to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll Writing changes to d:\Users\agross\Downloads\rt\src\ConsoleApplication1\ConsoleApplication1.csproj Same issue as above. Details here: agross/rippletemplate@9c3a90e.

I remember that I was able to "force" a version number in the path to the NUnit package, what I don't remember is how. I'll add it here if I manage to reproduce.

Help would be very much appreciated!

— Reply to this email directly or view it on GitHub.

agross commented 10 years ago

Jeremy, thanks for your quick reply. I get the difference between fixed and floating dependencies. Does that mean that:

In case neither is true, why does the HintPath include the version number?

agross commented 10 years ago

Alright, reread the the docs for about the tenth time and found answer to my question:

Because the dependency versions are unique per solution, there is no need to have version numbers in the exploded folders (e.g., src/packages/Bottles vs. src/packages/Bottles.1.0.0.0)

jeremydmiller commented 10 years ago

Fixed v. Float has no impact on the folder paths or the hint path. As a rule from day one, ripple assumes and enforces the usage of a single version of any nuget across the entire solution. Because of that, we're able to eliminate the nuget version number from the exploded packages folder -- which does a lot to reduce ugly merge conflicts.

I'm happy to update the docs if it'll make it more clear. Got any suggestions though?

On Nov 4, 2013, at 8:11 AM, Alexander Groß notifications@github.com wrote:

Alright, reread the the docs for about the tenth time and found answer to my question:

Because the dependency versions are unique per solution, there is no need to have version numbers in the exploded folders (e.g., src/packages/Bottles vs. src/packages/Bottles.1.0.0.0)

— Reply to this email directly or view it on GitHub.

agross commented 10 years ago

I think it's all right with the docs for people who can read (obviously I'm not one of them ;-)

But my main issue still stands:

HintPath changed:  to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll
Updated reference for d:\Users\agross\Downloads\rt\src\ConsoleApplication1\ConsoleApplication1.csproj to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll

See the version number in the path.

I think what needs more documentation is classic mode vs the other mode (futuristic mode?).

jmarnold commented 10 years ago

@Alexander,

Do you see anything in the ripple output that says "Classic Mode detected"? If ripple thinks that you're in Nuget mode, it will keep the version numbers in the path (in the current version).

On Mon, Nov 4, 2013 at 8:22 AM, Alexander Groß notifications@github.comwrote:

I think it's all right with the docs for people who can read (obviously I'm not one of them ;-)

But my main issue still stands:

HintPath changed: to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll Updated reference for d:\Users\agross\Downloads\rt\src\ConsoleApplication1\ConsoleApplication1.csproj to ..\packages\NUnit.2.6.3.0\lib\nunit.framework.dll

See the version number in the path.

I think what needs more documentation is classic mode vs the other mode (futuristic mode?).

  • What are the advantages of either one?
  • Why do we start with classic?
  • How to move from classic to futuristic and back?
  • Is the latter even possible?

— Reply to this email directly or view it on GitHubhttps://github.com/DarthFubuMVC/ripple/issues/237#issuecomment-27687943 .

agross commented 10 years ago

@jmarnold

Yes, I see two "classic mode" outputs per ripple install (see logs above and in my clone). I have no idea how to change that.

Could is be that ripple is in an inconsistent state? I.e. knows it's in classic mode, but downloads packages to a path without version numbers? Hence, the broken HintPath?

jmarnold commented 10 years ago

That's possible, yes. Unfortunately the "convert" commands that exist were used to convert between ripple 1.0 and ripple 2.x. To be honest with you, I never expected much adoption so the "Nuget to ripple" story is a bit lacking at the moment. I'll look into this as soon as I can to see what I can find for you.

On Mon, Nov 4, 2013 at 8:33 AM, Alexander Groß notifications@github.comwrote:

@jmarnold https://github.com/jmarnold

Yes, I see two "classic mode" outputs per ripple install (see logs above and in my clone). I have no idea how to change that.

Could is be that ripple is in an inconsistent state? I.e. knows it's in classic mode, but downloads packages to a path without version numbers? Hence, the broken HintPath?

— Reply to this email directly or view it on GitHubhttps://github.com/DarthFubuMVC/ripple/issues/237#issuecomment-27688717 .

agross commented 10 years ago

The thing is, I didn't even start out in "classic/NuGet mode". I started from scratch with your DarthFubuMVC/rippletemplate project to test things.

Can you tell me how ripple can be convinced to stop using NuGet mode?

jmarnold commented 10 years ago

Right now the absence of a ripple.dependencies.config would probably do it. Do you have one of those next to your csproj file(s)?

On Mon, Nov 4, 2013 at 8:38 AM, Alexander Groß notifications@github.comwrote:

The thing is, I didn't even start out in "classic/NuGet mode". I started from scratch with your DarthFubuMVC/rippletemplate project to test things.

Can you tell me how ripple can be convinced to stop using NuGet mode?

— Reply to this email directly or view it on GitHubhttps://github.com/DarthFubuMVC/ripple/issues/237#issuecomment-27689092 .

agross commented 10 years ago

Just to reiterate to make sure I get it:

(I don't have any ripple.dependencies because I started the project from scratch.)

jmarnold commented 10 years ago

Yes, that's correct. We had an issue with the "find packages.config" approach early on so we settled with this one.

For now, can you try creating an empty text file called ripple.dependencies.config next to a project file?

On Mon, Nov 4, 2013 at 8:43 AM, Alexander Groß notifications@github.comwrote:

Just to reiterate to make sure I get it:

  • If there is no ripple.dependencies we are in "classic/NuGet mode"
  • If there is a ripple.dependencies we are in "futuristic mode"

(I don't have any ripple.dependencies because I started the project from scratch.)

— Reply to this email directly or view it on GitHubhttps://github.com/DarthFubuMVC/ripple/issues/237#issuecomment-27689505 .

agross commented 10 years ago

Works :-) :+1:

Should we leave this ticket open? I think there's some work needed w.r.t. to starting with a empty solution. It' been a bit of a bumpy ride...

jmarnold commented 10 years ago

I couldn't agree more, sadly. Thanks for sticking it out ;)

On Mon, Nov 4, 2013 at 8:50 AM, Alexander Groß notifications@github.comwrote:

Works :-) [image: :+1:]

Should we leave this ticket open? I think there's some work needed w.r.t. to starting with a empty solution. It' been a bit of a bumpy ride...

— Reply to this email directly or view it on GitHubhttps://github.com/DarthFubuMVC/ripple/issues/237#issuecomment-27690112 .

agross commented 10 years ago

Renamed the ticket to make it more clear what's going wrong.

ursenzler commented 10 years ago

Just run into the same problem. Would be nice to explain what classic mode means on the console output.