1- Centralized Version Control:

 Strengths  Best used for
  • Easily scales for very large codebases
  • Granular permission control
  • Permits monitoring of usage
  • Allows exclusive file locking
  • Large integrated codebases
  • Audit and access control down to the file level
  • Hard to merge file types


A typical centralized Version Control workflow:

  • Get the latest changes other people have made from the central server.
  • Make your changes, and make sure they work properly.
  • Check in your changes to the central server, so other programmers can see them.

2- Distributed Version Control:

 Strengths  Best used for
  • Cross platform support
  • An open source friendly code review model via pull requests
  • Complete offline support
  • Portable history
  • An enthusiastic growing user base
  • Small & modular codebases
  • Evolving through open source
  • Highly distributed teams
  • Teams working across platforms
  • Green field codebases

3- Git and TFVC:
3.1- Git (distributed):
Each developer has a copy of the source repository on their development system

3.2- TFVC (centralized):

  • Server Workspaces
  • Local Workspaces