Piston 1.3.0: Switch between repository locations

Piston 1.3.0 is out the door. There are two significant changes:

  • Piston status shows the revision number of locked repositories.
    Thanks to
    Chris W. http://errtheblog.com/.

  • New piston switch subcommand to switch repository locations. Thanks
    to
    Greg Spurrier for the prompt which resulted in finally implementing
    this.

Use piston switch like this:

$ piston switch http://dev.rubyonrails.org/svn/rails/tags/rel_1-2-1
vendor\rails
Processing ‘vendor\rails’…
Fetching remote repository’s latest revision and UUID
Restoring remote repository to known state at r6010
Updating remote repository to
http://dev.rubyonrails.org/svn/rails/tags/rel_1-2-1@5990
Processing adds/deletes
Removing temporary files / folders
Updating Piston properties
Updated to r5990 (663 changes)

= What is it ?

Piston is a utility that eases vendor branch management. This is similar
to svn:externals, except you have a local copy of
the files, which you can modify at will. As long as the changes are
mergeable, you should have no problems.

This tool has a similar purpose than svnmerge.py which you can find in
the
contrib/client-side folder of the main Subversion repository at
http://svn.collab.net/repos/svn/trunk/contrib/client-side/svnmerge.py.
The main difference is that Piston is designed to work with remote
repositories. Another tool you might want to look at, SVK, situated at
http://svk.elixus.org.

From Wikipedia’s Piston page (http://en.wikipedia.org/wiki/Piston):
In general, a piston is a sliding plug that fits closely inside the
bore
of a cylinder.

Its purpose is either to change the volume enclosed by the cylinder,
or
to exert a force on a fluid inside the cylinder.

For this utility, I retain the second meaning, “to exert a force on a
fluid
inside the cylinder.” Piston forces the content of a remote repository
location back into our own.

= Installation

Nothing could be simpler:

$ gem install --include-dependencies piston