At our company, we are evaulating to migrate to GIT
from SVN
. Here we are following a process in which we have the following branch and access control.
-----------------------------------------------
| Branch | Purpose | ACL |
-----------------------------------------------
| `master` | live copy | AGM |
-----------------------------------------------
| `staging` | staging copy | AGM, TL |
-----------------------------------------------
| 'dev` | development copy | AGM, TL, Devs|
-----------------------------------------------
Now all devs create a feature branch from the dev
branch and again merge it in dev
when they have finished working and push it. Now TL review the work and cherry pick or merge dev
in staging, depending on the sencario. If everything is well they push the changes on staging
. Same is done by AGM's for master
branch.
We want that devs will be able to pull the changes from staging
and master
branch, but will not be able to push.
So the questions are:
- How can we setup a authentication system where only the allowed one will be able to push.?
- Any pointer or guidelines while migrating ?