Hi all!

We are currently using MS Team Foundation Server (TFS) 2018 with TFVC for 
hosting our source repositories.
We are using Visual Studio (2019) for development and will continue to use 
it.
We use a minimalist branching workflow in that there is a main development 
branch, then at regular intervals, we branch off what will be the customer 
release versions.
These different releases have to be maintained for several years each.
Bug fixes may go to either branch and may then be merged into the others.
Note that we are talking TFS/TFVC style "heavyweight" branches here.

The repository is rather big.
It contains two very distinct parts, namely
Code (20K files, <1GB) and Tests (300K+ files, >12GB).
The Tests part does contain a lot of binary files - primarily test 
databases for functional tests. But also a great deal of small text files.
I am aware that this might be an arguable choice to have it included in the 
repo,
but we need to be able to track history and always be able to align the 
test stuff with the code stuff, across our release branches, at any point 
in time, so it seemed a natural choice.
The Tests part isn't needed by every developer though.
In TFS/TFVC, we have the common practice to "cloak" the Tests for people 
not concerned and "map" them to different parts of the file system for 
those who are.

We are now considering moving our repos to Git.
Outside of of TFS that is, because we will be ditching TFS entirely.
I am not an expert on Git.

This leads to several questions:
1)
It seems that the above size and layout may pose problems when using Git?
Especially, we don't want people not using the Tests part to suffer any 
burden (disk space, checkin/out performance) when working locally.
Is it possible? Should we structure our repository differently?
Also is it possible to map the Tests part to a different part of the 
filesystem?

2)
Concerning the branch layout.
With TFS, developers were used to having several working copies (called 
workspaces in TFS), for working on different subjects and the different 
release branches are physically represented in different filesystem folders.
This means for example that people would be able to have several instances 
of VS open on different code bases, both in terms of releases and subjects.
If I understand the function of <git checkout> well, it replaces the entire 
local working directory files with the ones from the requested branch.
This would lead to unpleasant consequences, in terms of context switching, 
rebuild times etc.
Is there a way we can maintain the habits of having different working 
folders for releases and subjects, without having to duplicate the entire 
(big) repository?


We'd prefer solutions that work well with Visual Studio.
(VS does integrate git support natively in the IDE for common tasks)

Hoping for Beginner-friendly answers and recommendations.
Best Regards,
Lars R.

-- 
You received this message because you are subscribed to the Google Groups "Git 
for human beings" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to git-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/git-users/24430cd5-11fd-4c4f-911e-11d80997f3a2n%40googlegroups.com.

Reply via email to