[ANN] Piston 1.2.0: status, better update

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 Wanstrath for the
inspiration. His Rake tasks are available at

* 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/ 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

$ 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/ 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 !
François Beausoleil


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 vendor/rails
svn: Explicit target required ('vendor/rails' interpreted as prop value)
`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
        from c:/ruby/lib/ruby/gems/1.8/gems/piston-1.2.0/lib/piston/command.rb:18:in
        from c:/ruby/lib/ruby/gems/1.8/gems/piston-1.2.0/lib/piston/ui/command_line.rb:57:in
        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 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?



On 11/18/06, Francois Beausoleil <francois.beausoleil@gmail.com> wrote:

Piston 1.2.0 is here.

Enjoy !
François Beausoleil