SVN and distributed shared projects?

I think you are bumping up against one of the fundamental limits of svn, paired with a project which was not designed to be used with it. As I'm sure you know, subversion allows you to do many creative things--at the directory level. For files, it can get touchy.

First, there is a policy matter. Everyone is running their own environment, and this environment needs to be portable. Everything goes in one repository.

You don't mention if you are *nix or m$. As usual, there is a workable solution for *nix

Create a directory trunk/local_env. Inside trunk/local_env, create a directory for every local environment. Depending on corporate paranoia policy, these directories can be accessible only to their owners.

Each file which is part of a local environment is made into a soft link. That soft link in turn goes through trunk/env--a directory link which is NOT part of the repository. Now anyone can potentially check out the project with everyone's environments, and can select which ever they wish to use, by linking the single directory.

I have no idea what the equivalent might be in m$.

so why not tell the "big" svn to ignore the local_env directory and let the individual developer checkout his/her local stuff into that directory. It means having to do separate svn commands, but that detail could be hidden away in a Rakefile. (I've done this with a "tools" repository checked-out into a directory ignoring a "src" directory and checking out a separate repository in ./src)

-Rob

database.yml is an ERB template, actually. So, you can add a line to it to check if database.yml.local is present, and load it.

Same story with other configuration files (which are .rb, so it's even easier).

Btw, database.yml can look like this:

common: &common   adapter: mysql   encoding: utf8   host: localhost   socket: <%= %w[/tmp/mysql.sock /var/lib/mysql/mysql.sock /var/run/mysqld/mysqld.sock /opt/local/var/run/mysql5/mysqld.sock].detect { |f| File.exists? f } %>   database: petstore_<%= RAILS_ENV %>   username: root   password:

development:   <<: *common

test:   <<: *common

production:   <<: *common