Looking for suggestions on:
- GIT branching/pull/merge best practices
- Deployment best practices
- Automation tips
I've found articles about Continous Integration but generally they are for DEV->QA or DEV->QA->PROD. I'm looking more for the reverse, continually integrating Prod changes into Dev, DEV->PROD.
Background: A developer can't keep up with the constant changes in production. We can't re-train the Admins to only work in a Sandbox. Too much overhead and not reasonable for simple changes to Picklists, Reports, Validation Rules, etc. that our Admins love to create and customize. A developer needs these changes available in their dev environment. During deployment, developers don't want to overwrite a change made directly in Prod. During code cleanup and refactoring, developers need to be able to search all the latest code (metadata) in Prod. Sound Familiar?
Environment:
- We have Salesforce Unlimited, 2 Full Sandboxes, 3-5 active Dev Sandboxes.
- There are 8 Users with the System Admin profile in Prod.
- There are 2 full time developers and sometimes contract developers.
- Developers use Sublime/Mavensmate (sometimes Eclipse).
- GIT for Source control, we all work off 1 branch (master), sometimes create a separate branch for long projects.
- CopyStorm Backup/Restore for loading data into Dev Sandboxes
- Deployments are done through MavensMate from a Dev Sandbox to Prod and Full Sandboxes (as needed).