I recently had to share specifications and models between two applications. Here’s how I did it:

  1. Create a shared/ directory in Subversion
  2. svn copy the current models there
  3. svn copy the specifications (or unit tests)
  4. svn remove the app/models and spec/ folder from your project root
  5. piston import /shared/app/models app/models
  6. piston import /shared/spec spec/

The nice thing about this technique is that you can add models to one or the other application and they won’t care about it. You have to be careful not to have name clashes though.


You have one application in your repository named flow/. You are creating a new one named /bark. Here are the steps ($REPOS_ROOT is obviously your repository root):

1 $ svn mkdir $REPOS_ROOT/shared $REPOS_ROOT/shared/app -m "Creating shared models root"
2 $ svn move $REPOS_ROOT/flow/trunk/app/models $REPOS_ROOT/shared/app/models
3 $ svn move $REPOS_ROOT/flow/trunk/spec $REPOS_ROOT/shared/spec # or test/
4 $ svn checkout $REPOS_ROOT/flow/trunk
5 $ cd trunk
6 $ piston import $REPOS_ROOT/shared/app/models app/models
7 $ piston import $REPOS_ROOT/shared/spec spec
8 $ svn commit -m "Copied shared models back in using Piston"


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