Translate your TFVC flow to Git flow during development of MSDyn365FO

When developing extensions for Microsoft Dynamics 365 for Finance and Operation you will most likely use Team Foundation Version Control (TFVC). If your using Git for this process, as described in one of my previous posts, you will have to “translate” your well-known TFVC process/flow to Git process/flow. I know that the change from TFVC to Git is not only a translation of the flow, but it is more the change of a mindset. What I also know is that the term GitFlow is already assigned to a branching model for Git, created by Vincent Driessen. The “Git flow” and “TFVC flow” in this post is more meant as processes when using Git or TFVC. The branching strategy of GitFlow I will map to MSDyn365FO in one of my following posts.

In this blog I want to “simply” translate some of the well-known TFVC processes/flows to Git. After this creation of a common knowledge I want to describe the development process for a PBI or bug when using Git, in one of my next posts.

Create workspace mapping = Clone repository & create symbolic link

Before you can start developing extensions for MSDyn365FO with TFVC you have to create a workspace mapping to assign your AOS folder to your repository. With Git you will clone your repository to a folder on your environment and create a symbolic link into your AOS folder, to get the connection between the AOS folder and the repository.

Check-In changes = Commit and push changes

When you are done with your development work or when you want to bring the current version of your work to version control, you check-in your changes with TFVC. With Git you commit and push your changes.

Create code review = Create pull request

The review of the changed/added code is handled by code reviews with TFVC before the check-in and with Git via pull requests after you committed and pushed your changes.

Complete pull request

The step of completing a pull request has no direct equivalent in TFVC. By completing a pull request the changed/added code get´s merged into the target branch e.g. develop.

Exclude/include changes = Stage/unstage changes

With TFVC you exclude/include changes to compile the changes you want to check-in. With Git you stage/unstage changes you want to commit. The advantage with Git is that you can compare staged and unstaged changes per element, so stage will already save the staged state.

Get latest version = Pull

When you want to get the latest (checked-in) version, you will simply perform “get latest” on your current branch with TFVC. With Git you can pull the latest version, but because your most likly using your “private” developemt branch you have to merge the latest changes from e. g. development branch into your “private” development branch.

5 thoughts on “Translate your TFVC flow to Git flow during development of MSDyn365FO

    1. With symbolic links your able to map multiple repositories in our case e. g. customer repo + multiple of our own ISV repos + CDE repo.
      We’re not having any problems since years with this.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s