正好需要,zz过来,抄袭自:http://www.surui.net/2007/01/12/rails-with-subversion-svn/
首先是初始化 Rails app 的一系列命令,其中忽略了所有的 log 文件,tmp 文件,database.yml:
# svn import . repository_url -m “Import” –username user
# mv your_rails_app your_rails_app_backup
# svn checkout svn_url_to_your_repository your_rails_app
# svn remove log/*
# svn commit -m “removing all log files from svn”
# svn propset svn:ignore “*.log” log/
# svn update log/
# svn commit -m “ignore all file in /log/ ending .log”
# svn propset svn:ignore “*” tmp/sessions tmp/cache tmp/sockets
# svn commit -m “ignore all files in /tmp/”
# svn move config/database.yml config/database.yml.example
# svn commit -m “moving database.yml to database.yml.example to provide a template for anyone who checks out the code”
# svn propset svn:ignore “database.yml” config/
# svn update log/
# svn commit -m “ignore datase.yml”
如果需要忽略掉 tmp/ 下面的所有文件,可以这样:
# svn remove tmp/*
# svn propset svn:ignore “*” tmp/
# svn update tmp/
# svn commit -m “ignore tmp/ content from now”
如果 team 同时在 -nix 和 windows 上面开发,会有 shebang(#!) 不同的问题,可以忽略掉所有的 dispatch 文件:
# svn move public/dispatch.rb public/dispatch.rb.example
# svn move public/dispatch.cgi public/dispatch.cgi.example
# svn move public/dispatch.fcgi public/dispatch.fcgi.example
# svn commit -m “moving dispatch.* to dispatch.*.example to provide a template for anyone who checks out the code”
# svn propset svn:ignore “dispatch.*” public/
# svn update public/
# svn commit -m “ignore dispatch.* files”
对于 rails plugin 的管理,可以直接将 plugin 作为外部文件,当 update 的时候所有的 plugin 都会找自己的 svn trunk 去 update,我们也可以指定一个版本锁定我们当前的 plugin:
# ruby script/plugin install -x svn_url_to_plugin_repository
# svn commit -m “added plugin xxx”
# svn update
# svn propedit svn:externals vendor/plugins
globalize -r179 svn_url_to_plugin_repository
开发过程中用 script/generate 产生的 rails 文件都需要手动添加到 svn 的工作拷贝中,如果觉得太麻烦可以使用下面的脚本,可以自动 svn add 所有的 status 为 ? 的文件:
# svn status | grep “^\?” | awk “{print \$2}” | xargs svn add
如果文件名包含空格,可以用下面的脚本:
# svn status | grep “^\?” | sed -e ’s/? *//’ | sed -e ’s/ /\ /g’ | xargs svn add
或者更省事的是在 bash 配置文件( 我mac上的配置文件是 ~/.bash_profile )里面加一个 alias :
alias svnaddall=’svn status | grep “^\?” | awk “{print \$2}” | xargs svn add’
编辑完记得 source ~/.bash_profile