Notes from conference call: [1]


Our Architecture

  • Every developer has their own sandbox
  • Use ant script to push code around (will open source this tool eventually)
  • Push to our DEV sandbox (full sandbox)
  • Commits happen in git
  • Rebase and merge into git repository
  • Use Hudson (what Jenkins[2] use to be called) watches a git repo which, when updated, deploys to our DEV sandbox
  • QA team does testing in DEV sandbox
  • At end of iteration use a tag in git to push to QA full sandbox



Example dev cycle

  1. Pull dev branch from git to get most recent changes
  2. Checkout local feature branch
  3. Push to developer sandbox
  4. Make changes to sandbox (config or code)
  5. Pull from developer sandbox
  6. Commit changes
  7. Repeat last 3 steps until feature is complete
  8. Checkout dev branch
  9. Pull dev branch
    1. If there are changes:
    2. Checkout local branch
    3. Rebase local branch on dev
    4. Handle merge conflicts
    5. Push to developer sandbox (to verify push works)
    6. Commit changes
    7. Checkout dev branch
  10. Merge local branch into dev branch (squash merge preferred to make backing out changes easier)
  11. Push to dev branch
  12. Delete local feature branch