# Piston 1.3.0: Switch between repository locations

**URL:** <https://www.ruby-forum.com/t/piston-1-3-0-switch-between-repository-locations/82985>\
**Category:** Ruby\
**Created:** [January 22, 2007, 9:52pm UTC](https://www.ruby-forum.com/t/piston-1-3-0-switch-between-repository-locations/82985 "2007-01-22T21:52:42Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![fbeausoleil](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/ec9cab/32.png) [@fbeausoleil](https://www.ruby-forum.com/u/fbeausoleil)\
**Post date:** [January 22, 2007, 9:52pm UTC](https://www.ruby-forum.com/t/piston-1-3-0-switch-between-repository-locations/82985/1 "2007-01-22T21:52:42Z")

</div>

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/](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](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](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](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](http://svk.elixus.org).

From Wikipedia’s Piston page ([http://en.wikipedia.org/wiki/Piston](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
