Project

General

Profile

Development cycle » History » Revision 11

Revision 10 (Tom Clegg, 08/12/2011 09:19 PM) → Revision 11/14 (Ward Vandewege, 08/12/2011 09:38 PM)

h1. Development cycle 

 h2. Getting the code base 

  git clone git@git.clinicalfuture.com:pgp-enroll.git 

 h2. Writing and contributing code 

 Start a branch like username/master or username/rails3 

  git branch example/rails3 
 git checkout example/rails3 

 Do something trivial like 

 * add app/views/pages/specimen_collection.html.erb 
 * add link to it in app/views/pages/home.html.erb 

 Commit it.    If you refer to the issue# in the comment, redmine will notice this and do smart things (e.g., link to the commit from the issue page). 

  git add ... 
 git commit -m 'description of stuff (closes #123)' 

 Push it 

  git push 

 Generate a pull request 

  git request-pull e68ab19^ git@git.clinicalfuture.com:pgp-enroll.git e68ab19 

 Send the pull request to someone like Ward 

 h2. Merging code from other contributors/branches 

 Fetch latest code in other developers branches 

  git fetch 

 List remote branches 

  git branch -a 

 Switch to the other branch 

  git checkout origin/example/rails3 

 (git will complain about being in a detached head state, but that's fine - just don't commit to this state) 

 Now look around, test 

  git log 

 Switch to production branch (set up with @git checkout --track origin/rails3@ if you haven't already) and make sure it's up-to-date 

  git checkout rails3 
 git pull origin rails3 

 See what hasn't been merged 

  git cherry -v rails3 origin/example/rails3 

 Cherry-pick a commit 

  git cherry-pick e68ab19 

 Or merge the entire remote tree (this will fetch and merge but not yet commit) 

  git merge --no-commit origin/tomc/rails3 
 
 When you're happy,  

  git commit 

 Or rewind 

  git reset --hard rails3 

 Finally, push 

  git push 

 h2. Deploying to my-dev 

 Basics 

  sudo gem install capistrano 

 Make sure "ssh root@www-dev.sum" puts you in root@www-dev and that *you have an SSH agent available.*    You might need in @~/.ssh/config@: 

  Host www-dev.sum 
   HostName www-dev 

 Check out production branch 

  git checkout rails3 

 Deploy to www-dev 

  cap deploy 

 The capistrano task will run any required Do db migrations automatically. If you ever need to run them manually, you can do this (on www-dev): on www-dev 

  ssh root@www-dev.sum sh -c "'cd /var/www/my-dev.personalgenomes.org/current && RAILS_ENV=staging rake db:migrate'" 

 h2. Deploying to production server 

 Make sure "ssh root@www-prod.sum" puts you in root@www-prod and that you have a working SSH agent. 

 Check out production branch 

  git checkout rails3 

 Deploy to www-prod 

  cap deploy -f Capfile.production 

 The capistrano task will run any required Do db migrations automatically. If you ever need to run them manually, you can do this (on www-prod): on www-prod 

  ssh root@www-prod.sum sh -c "'cd /var/www/my.personalgenomes.org/current && RAILS_ENV=production rake db:migrate'"