# Piston 1.2.0: status, better update

**URL:** <https://www.ruby-forum.com/t/piston-1-2-0-status-better-update/76324>\
**Category:** Ruby\
**Created:** [November 17, 2006, 4:54pm UTC](https://www.ruby-forum.com/t/piston-1-2-0-status-better-update/76324 "2006-11-17T16:54:33Z")\
**Posts on this page:** 2\
**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:** [November 17, 2006, 4:54pm UTC](https://www.ruby-forum.com/t/piston-1-2-0-status-better-update/76324/1 "2006-11-17T16:54:33Z")

</div>

Piston 1.2.0 is here. From the ChangeLog:

- New status subcommand. Shows M if locally or remotely modified.  
Applies to one, many, all folders. This subcommand _requires_ the  
use of a Subversion 1.2.0 client. Thanks to Chris W. for the  
inspiration. His Rake tasks are available at  
[SOAP in my Mocha! — err.the\_blog](http://errtheblog.com/post/38).

- Minor patch by Miguel Ibero Carreras to make Subversion always use  
the C locale, instead of the current one. This allows Piston to be  
used with internationalized versions of Subversion. David Bittencourt  
later reported the same problem. Thanks!

- Better handle how update finds it’s latest local revision to prevent  
conflicts. If you had never locally changed your vendor repositories,  
this fix will change nothing for you. This helps prevent local  
conflicts if you had ever applied a local patch.

== Installation

$ gem install piston  
Successfully installed piston, version 1.2.0

(Allow some time for the RubyForge file release system to propagate the  
gem)

There is no need to install “Piston”:[http://piston.rubyforge.org/](http://piston.rubyforge.org/) on  
your server. A local installation on your development machine is all  
that you need to administer the remote code.

== Caveat

It is _imperative_ that you locally update your piston:local-revision  
property manually, just this once. Prior to 1.2.0, Piston would  
almost never update the piston:local-revision property, meaning it  
would always think there were local changes. With the new update  
implementation, Piston would try to merge changes that had already  
occured, causing many conflicts. You need to reset the value of  
piston:local-revision to the revision where you last did a piston  
update or import.

An example is in order.

$ svn propget piston:local-revision vendor\rails  
29

## $ svn log -r head:1 vendor/rails

r31 | francois | 2006-11-17 10:05:54 -0500 (ven., 17 nov. 2006) | 1 line

## Updated to Rails r4500

r30 | francois | 2006-11-17 10:03:48 -0500 (ven., 17 nov. 2006) | 1 line

## Import Rails r4393

$ svn propset piston:local-revision 31 vendor\rails  
property ‘piston:local-revision’ set on ‘vendor\rails’

$ svn commit --quiet --message “Updated piston:local-revision to 31,  
per ChangeLog instructions”

Visit [http://piston.rubyforge.org/](http://piston.rubyforge.org/) for all the details.

== What is Piston ?

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.

Piston has a similar purpose than svnmerge.py which you can find in  
the contrib/client-side folder of the main Subversion. The main  
difference is that Piston is designed to work with remote  
repositories. You should also investigate if SVK would be a better fit  
for you.

From Wikipedia’s 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 Piston, we retain the second meaning, to exert a force on a fluid  
inside the cylinder. In our case, the fluid is the code copied from  
the remote repository.

Enjoy !

---

<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:** [November 19, 2006, 1:58pm UTC](https://www.ruby-forum.com/t/piston-1-2-0-status-better-update/76324/2 "2006-11-19T13:58:35Z")

</div>

On 11/18/06, Francois B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Piston 1.2.0 is here.
> 
> ## Enjoy !
> 
> FranÃ§ois Beausoleil

FranÃ§ois,

Firstly thanx for such a great app. I am an svn noob, and this has made  
it  
possible for me to manage my repo relatively easily.

I’ve just upgraded to 1.2 and tried to generate a new project. Then  
i’ve  
tried to import edge rails and simply\_bdd but I get an error.

C:\rails\_projects\soter\>piston import  
[http://dev.rubyonrails.org/svn/rails/trunk](http://dev.rubyonrails.org/svn/rails/trunk) vendor/rails  
svn: Explicit target required (‘vendor/rails’ interpreted as prop value)  
c:/ruby/lib/ruby/gems/1.8/gems/piston-1.2.0/lib/piston/command.rb:38:in  
`svn': Command svn propset piston:remote-revision vendor/rails resulted in an error: (RuntimeError) from c:/ruby/lib/ruby/gems/1.8/gems/piston-1.2.0/lib/piston/commands/import.rb:40:in `run’  
from  
c:/ruby/lib/ruby/gems/1.8/gems/piston-1.2.0/lib/piston/command.rb:18:in  
`execute' from c:/ruby/lib/ruby/gems/1.8/gems/piston-1.2.0/lib/piston/ui/command_line.rb:57:in `start’  
from c:/ruby/lib/ruby/gems/1.8/gems/piston-1.2.0/bin/piston:12  
from c:/ruby/bin/piston:18:in `load’  
from c:/ruby/bin/piston:18

I’m on Windows XP, and ruby 1.8.5. My svn repo is on [devjavu.com](http://devjavu.com) and is  
password protected. I haven’t been able to pass the --useraname or  
–password options through to the svn command.

Is anyone else having this kind of issue? What have I done wrong?

Cheers  
Daniel
