I generally use Subversion for source control when given the choice. In day to day usage, I like to use Tortoise SVN as it gives you a GUI with tick boxes for files to check in. However, it’s handy to use the command line tool for project setup and automation.
Often, there is a subversion repository already set up and running on another machine. In this situation, I generally:
- Check out the repository at the top level into a temporary directory through Tortoise, add a new directory ([appname]) for the new project, and check it in.
- Generate the new rails app (rails [appname]).
- Check out [appname] from the repository into the local directory [appname] which contains the Rails project.
- Add and check in all files through Tortoise.
- Run the following commands from the command line to remove logs and tmp from the repository:
svn remove log/* svn commit -m "removing all log files from subversion" svn propset svn:ignore "*.log" log/svn update log/ svn commit -m "Ignoring all files in /log/ ending in .log" svn remove tmp/* svn propset svn:ignore "*" tmp/ svn update tmp/svn svn commit -m "Ignoring all files in /tmp/"
There’s more Rails/Subversion info to be found on the Rails wiki.
Josh G
Nice – also have a look at http://wiki.rubyonrails.org/rails/pages/HowtoUseRailsWithSubversion for tips and links to other similar tutorials.
On a side note, when you have large projects or those with lots of repository activity (like most Agile projects do), it’s often good to have a distinct repository per project, as there’s less effort in processing what’s changed between repository version numbers and whether it applies to your subtree. Anyway, it’s easy enough to split/merge repositories with svnadmin.