TFVC (TFS) for Git users - (Part 1)

First off, Git is a distributed version control system (DVCS) while TFVC (not TFS. See next line) is a centralized version control system (Centralized VCS).

Also, a common confusion is that Team Foundation Server (TFS) is the version control system. Not quite a correct comparison.

Image showing 'The Joker' from Batman series threatening to push 'Rachel Dawes' from a height

TFS is a suite of tools. Until 2013, TFS only supported Team Foundation Version Control (TFVC) for source code management. Later, support for Git was added into.

For more details, see this official post

What does it mean to me?

With Git, you get the entire history into your local system. You can

  • work on all branches, go back to old version etc. even when you are not in your workplace
  • disconnect from the VPN and still be able to do all VCS-related work locally
    • git add, git commit, git checkout -b etc.
  • have branches locally only and can choose to push to remote server only when you want to
  • keep changes that you are not sure you want to put into a branch in a stash

With TFVC, you get a snapshot of the repository at the time you started working on the project.

  • There's no concept of local check-in1
  • You can still create branches and have your work there. Only be informed that, the branches are already on remote server
    • The branch is not merged into main branches until you choose to. So your master, development etc. branches are still safe
  • You can use shelves/shelvesets2 to get the same functionality as Stash3

In Part-2, let's go over the adaptations you have to make to your workflows when you are required to used TFVC. A link will be made availble here.