I am developing an API. We have 3 environments. Dev (Not local setup), Staging and Prod.
As usual, we develop everything on Dev. Once completed, push that to staging, test it there and then push to production.
Deployments are setup on Beantalk this way:
Dev (Auto Deploy to the server)
Staging (Manual Deploy)
Prod (Manual Deploy)
When we released first version of API V1.0. Everything is in Sync with SVN Revision Numbers. Say all 3 environments are at revision number 1000 deployed on to all 3 servers.
Now I keep fixing the bugs in Development environments. So now the revision number deployed onto Dev is 1200. Company did not want to push all these changes to staging and production.
Now they came up with urgent bugs. They want only these bugs to be pushed to Staging and Production, not the bugs I fixed and already deployed on to dev.
After the release v1.0, I created a tag and copied all files. So now I created a branch out of that tag, checked out the files to my local system and started fixing the bugs on this branch (Not sure if this is the right way to do).
However, when I commit the changes, those are are automatically deployed on the dev. Now the dev has the revision number from 1201 (It was at 1200 with all the fixed I did previously, but not deployed to Staging and Prod).
Now, the revision number deployment looks like this:
Dev (1201)
Staging (1000)
Prod (1000)
I want the latest fixes to be deployed to Staging and Prod. When I select 1201 to deploy to Staging and Prod, then I guess it deploys all revisions from 1001 to 1201. Not just 1201.
Do you have any idea how to deal with this? Are there any better practices?