Project

General

Profile

Actions

Development cycle » History » Revision 11

« Previous | Revision 11/14 (diff) | Next »
Ward Vandewege, 08/12/2011 09:38 PM


Development cycle

Getting the code base

git clone :pgp-enroll.git

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^ :pgp-enroll.git e68ab19

Send the pull request to someone like Ward

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

Deploying to my-dev

Basics

sudo gem install capistrano

Make sure "ssh " 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 db migrations automatically. If you ever need to run them manually, you can do this (on www-dev):

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

Deploying to production server

Make sure "ssh " 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 db migrations automatically. If you ever need to run them manually, you can do this (on www-prod):

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

Updated by Ward Vandewege over 12 years ago · 11 revisions