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 W. for the
    inspiration. His Rake tasks are available at
    SOAP in my Mocha! — err.the_blog.

  • 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
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/ 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 !

On 11/18/06, Francois B. [email protected] 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 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 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