Bash script to perform initial import of a rails project
This is still a work in progress. The objective is to script the entire initial svn hassle that needs to be done with a rails project. The first import, then the first checkout, and then dealing with all the files that need to be ignored. Based heavily on:
http://wiki.rubyonrails.org/rails/pages/HowtoUseRailsWithSubversion
In the future I may add capistrano setup and such.
This worked the last time I tried it, but I don't expect it to work the next time.
http://wiki.rubyonrails.org/rails/pages/HowtoUseRailsWithSubversion
In the future I may add capistrano setup and such.
This worked the last time I tried it, but I don't expect it to work the next time.
#!/bin/bash set -v # verbose output ## USAGE: configure the following variables, and execute in your rails root, ie the directory with ## config/ and app/ ## NOTE: This script assumes that your directory of your rails root has the same name as both your ## application, and your svn repo. ## ## This script also assumes that it's ok to make a backup in the parent directory of your ## rails root. username="jonshea" # CHANGE ME!!!!!!! svn_url="http://jonshea.com/svn/" # CHANGE ME!!!!! ## This is still a work in progress. The objective is to script the entire initial svn hassle that ## needs to be done with a rails project. The first import, then the first checkout, and then ## dealing with all the files that need to be ignored. Based heavily on: ## ## http://wiki.rubyonrails.org/rails/pages/HowtoUseRailsWithSubversion ## ## It designed only for freshly created applications, that haven't really be changed at all from the ## original generation script app_dir=`pwd` app_name=`basename $app_dir` svn_url_to_your_repository=${svn_url}${app_name} # Assumes your repo has the same name as your app echo $app_name echo $svn_url_to_your_repository ## Do the initial import svn import . ${svn_url_to_your_repository}/trunk -m "First Import" --username $username cd .. # Back out a directory from the root ## We're going to make a backup of your app. If one is already there, then remove it. test -d ./pre_svn_backup_$app_name || rm -rf pre_svn_backup_$app_name mkdir ../pre_svn_backup_$app_name mv -f $app_dir ./pre_svn_backup_${app_name} # Move the rails app to the backup dir. mkdir $app_dir # recreate the application directory cd $app_dir svn checkout ${svn_url_to_your_repository}/trunk . # Check out the subversion repo to the app directory ## This section cleans up the svn repo, so that you're not versioning things that shouldn't be versioned. 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 commit -m 'removing the temp directory from subversion' svn propset svn:ignore "*" tmp/ svn update tmp/ svn commit -m 'Ignore the whole tmp/ directory, might not work on subdirectories?' svn move config/database.yml config/database.example svn commit -m 'Moving database.yml to database.example to provide a template for anyone who checks out the code' svn propset svn:ignore "database.yml" config/ svn update config/ svn commit -m 'Ignoring database.yml' svn move public/dispatch.rb public/dispatch.rb.example cp public/dispatch.rb.example public/dispatch.rb svn move public/dispatch.cgi public/dispatch.cgi.example cp public/dispatch.cgi.example public/dispatch.cgi svn move public/dispatch.fcgi public/dispatch.fcgi.example cp public/dispatch.fcgi.example public/dispatch.fcgi svn commit -m 'Moving dispatch.(star) to dispatch.(star).example to provide a template.' svn propedit svn:ignore public/ dispatch.rb svn propedit svn:ignore public/ dispatch.cgi svn propedit svn:ignore public/ dispatch.fcgi svn update public/ svn commit -m 'Ignoring dispatch.* files' svn propedit svn:ignore db/ *.sqlite svn propedit svn:ignore db/ *.sqlite3 svn commit -m 'Ignore database files' #cap --apply-to $app_dir $app_name #svn add config/deploy.rb #svn add lib/tasks/capistrano.rake exit 0