Good morning everyone.
We have a historiclly grown TFVC repository (hosted via TFS Version 15.117.26714.0). There was never a branch created, everything is just folders. The current structure is something like:
/project/trunk/application1
/project/trunk/application2
/project/branches/release1/application1
/project/branches/release1/application2
/project/branches/release2/application1
/project/branches/release2/application2
Where every release has multiple bugfix-commits, because we have to maintain older releases for our customers. The first commit is from 2011 and we are going strongly to the 100.000st changeset. Currently we just make commits where ever we like, but since the team has grown, the growing pains also havent gotten any better.
This setup is used in multiple projects.
We would now like to move to a more modern approach of making commits, like feature branches, pull request and easy to do code reviews. Especially the code reviews are currently a huge pain, because we have to cross-check every changeset of relevance.
Sadly we discovered that TFVC is unable to do Pull-Request, so we would like to move to git, but we want to keep our commit history.
For conversioning our TFVC repository to git, we found the tool git-tfs, with which we were able to convert each folder into a single git repository by converting the folders trunk, release 1 and release 2 (from the sketch above) into branches and executing the command:
"C:\Program Files\git-tfs\git-tfs.exe" clone https://dev.azure.com/userName1234/ "{branchName}" . --branches=auto
By adding the other repositories as remote, one can see the branches nicely next to each other.
But this results in A LOT of repositories. In our case it would end up to be 46 (!) repositories for our biggest project. This wouldn't be very nice, to say the least. Also this would mean, that depending on which version we have to create a bugfix for, we have to either change to another repository or search for the release branch from the master branch, which would mean two workflows for something that should be only one.
Is there a way to convert all those repositories into one repository, where the trunk is the master branch and the releases are branches of that master branch? At least from a human perspective, they are nicely distinguishable, as shown in this screenshot of a test-setup of our situation:
git-tfs
can treat them as Git branches? – Daniel Mann