Well, thanks to Graeme Mathieson, Piston finally sports a piston diff subcommand. This command allows you to know what changes you made vs what’s in the remote repository.

As usual, installation is pretty simple:

1 $ gem install piston

What does piston diff report ? Here it is:

 1 $ piston help diff
 2 diff: Shows the differences between the local repository and the pristine upstream
 3 usage: diff [DIR [...]]
 5   This operation has the effect of producing a diff between the pristine upstream
 6   (at the last updated revision) and your local version.  In other words, it
 7   gives you the changes you have made in your repository that have not been
 8   incorporated upstream.
10 Valid options:
11     -v, --verbose                    Show subversion commands and results as they are executed
12     -q, --quiet                      Do not output any messages except errors
13     -r, --revision=REVISION
14     -u, --show-updates               Query the remote repository for out of dateness information
15     -l, --lock                       Close down and lock the imported directory from further changes
16         --dry-run                    Does not actually execute any commands
17         --force                      Force the command to run, even if Piston thinks it would cause a problem
19 $ piston diff vendor/rails
20 Processing 'vendor/rails'...
21   Fetching remote repository's latest revision and UUID
22   Checking out repository at revision 8784
23 diff -urN --exclude=.svn vendor/rails.tmp/actionmailer/lib/action_mailer/base.rb vendor/rails/actionmailer/lib/action_mailer/base.rb
24 --- vendor/rails.tmp/actionmailer/lib/action_mailer/base.rb  2008-02-08 22:38:25.000000000 -0500
25 +++ vendor/rails/actionmailer/lib/action_mailer/base.rb  2008-01-11 17:05:42.000000000 -0500
26 @@ -348,7 +348,7 @@
27        #     end
28        #   end
29        def receive(raw_email)
30 -        logger.info "Received mail:\n #{raw_email}" unless logger.nil?
31 +        logger.debug "Received mail:\n #{raw_email}" unless logger.nil?
32          mail = TMail::Mail.parse(raw_email)
33          mail.base64_decode
34          new.receive(mail)
35 @@ -445,7 +445,7 @@
36      # no alternate has been given as the parameter, this will fail.
37      def deliver!(mail = @mail)
38        raise "no mail object available for delivery!" unless mail
39 -      logger.info "Sent mail:\n #{mail.encoded}" unless logger.nil?
40 +      logger.debug "Sent mail:\n #{mail.encoded}" unless logger.nil?
42        begin
43          send("perform_delivery_#{delivery_method}", mail) if perform_deliveries

Caveat: piston diff uses the command line version of diff. This means Windows users will need to install a compatible version, or write a wrapper script around some preferred tool that supports the same features.

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.

Visit Piston’s home page at http://piston.rubyforge.org/


Your Host

A picture of me

I am François Beausoleil, a Ruby on Rails and Scala developer. During the day, I work on Seevibes, a platform to measure social interactions related to TV shows. At night, I am interested many things. Read my biography.

Top Tags

Books I read and recommend


Projects I work on

Projects I worked on