I am in the process of moving my team from TFS to GIT in the very near future, but before I do so I want to know about any pitfalls that others may have experienced when moving a team from a centralized source control such as CVS, SVN, TFS, etc to a distributed source control system like GIT or Mecurial.
Some questions that instantly came time mind are:
Does each user work of their own branch on the server and then merge in when done, or do they just stay local to their machines and push to the server when done?
Should all new development work be done on a branch (i.e. "next-version") or should it be done against "master"?
Should new development be done in a clone on the server, and then issue pull requests to the production code base, or is a branch of the production code base good enough?
Follow up to number 3, if everything is done on a branch is there anyway to control who can do merges in to "master"?
Is there anything else I should worry about that I am not thinking of that happened in your move from centralized version control to distributed version control?
However my real curiosity and question concerns how you manage your workflow processes concerning GIT and other distributed source control systems, not really something that fits my current workflow process.
Update: Currently the development process in TFS is we have a master folder and then a branch folder for the next-version stuff, and when the next-version code is finished it is merged back in to the master folder. Each member of the team has full commit rights to the whole project. We don't have a sophisticated process by any stretch of imagination, we have up until now used our source control as just a dumb repository.
However that being said, I am looking for more of an ideal situation workflow process, not really something that fits my current workflow. That is is why I titled the question What team workflow processes do __you__ use concerning GIT?