Why is the benefit of svn:externals (or Piston)?

I realize this is probably a very n00bish question, but there’s
something I’m not understanding about this. Maybe it’s because my
background is .NET, so we don’t really have the concept of plugins,
but I’m not getting at all why you would have any need to use these.

If I run script/install plugin http://somesite/someplugin, doesn’t
Rails install those files in my vendor/plugin directory, and shouldn’t
I be keeping that directory under version control so anyone who checks
out the code will have the same versions that I’m using (One of the
first things I do when creating a new Rails project is to freeze the
version of rails, should I not be?) instead of having to get it
themselves and possibly causing conflicts.

If the vendor/plugins directory is under source control anyway, then
what exactly is the benefit of using svn:externals or something like
Piston to manage it, if when you check out a copy of the application
to work you’re getting the contents of vendor/plugins along with
everything else (I have the book “The Rails Way” and from its
description of svn:externals it sounds like it’s doing the same thing
i.e. checking out or updating the plugins in vendor/plugins)?

I’ve tried searching for something explaining why this is a good
thing, but I’m coming up empty - every site just seems to assume you
know why it’s a good thing, or explain what svn:externals does without
saying why you want it to do that. I understand what it does; what
I’m clueless on is why you need it when I’m storing vendor/plugins
under Subversion (or Git, as is the case) at the version my app is
using anyway - unless I’m missing something, if someone checks out my
code then they should be getting the exact same versions of everything
that I wanted it to use.

Once again I’m sorry for posting what might be a “duh” question, but
I’ve never encountered it before. Truth be told, before I got into
Rails I never used version control or wrote tests or anything (not by
choice, but all the .NET jobs I’ve had were with companies that had no
idea what version control was, and were run by people who didn’t
understand why writing tests are good), so I’m not aware of a lot of
“best practices”, although I’m trying hard to learn and become a
better developer.

Hoping someone can provide some clarity on this, as I’m pretty
confused right now.

  • Wayne

If the vendor/plugins directory is under source control anyway, then
what exactly is the benefit of using svn:externals or something like
Piston to manage it, if when you check out a copy of the application
to work you’re getting the contents of vendor/plugins along with
everything else

The benefit of using Piston is that it’s easy to keep the plugin in
sync with the source repository and get updates. Piston will also
allow you to lock the plugin to a specific revision number so it is
not updated (until you unlock it).

best.
mike