We recently decided to move from TFVC to Git and I'm trying to find the best way to design our new Git architecture.
Our code is made of independent but tightly coupled modules, let's look at the following projects:
CommonLib1
CommonLib2
ApplicationA
(usesCommonLib1
)ApplicationB
(usesCommonLib1
&CommonLib2
)
Although CommonLib1
/CommonLib2
are completely independent, almost every new feature for ApplicationA
/ApplicationB
would require modifying CommonLib1
/CommonLib2
.
Moreover, when adding new features we would like to create a single branch that would span between all our projects.
As far as I understand, I'm left with 2 main options:
Create a repo for each project, and add
CommonLib1
/CommonLib2
as subtrees inApplicationA
/ApplicationB
.Create a single Monorepo for all the projects.
What would be the best Git practice for my situation?