Git,一个解决方案中的两个存储库

时间:2018-09-27 05:36:11

标签: c# git visual-studio azure-devops

我们在Visiual Studio上有两个用c#编写的项目,我们将它们命名为A和B。这两个都可以用作单独的产品。 Bu B可以作为模块集成到A或其他产品中。我们使用的是SVN,但现在我们使用VSTS(azure devops)切换到Git。

在相同的解决方案中,我们主要开发B项目,而同时开发A项目。

有没有办法单独设置这些存储库,并在没有切换解决方案的情况下在同一个分支中提交两个项目的更改?

我们应该使用什么正确的策略来管理这种情况?

2 个答案:

答案 0 :(得分:1)

我们使用git子模块解决了这个问题。子模块是另一个git存储库中的单独git存储库。您在两个存储库中分别提交,并且父存储库“记住”它当前指向的子模块存储库的提交。

您可以找到许多有关子模块的文档,例如在pro git book中。有一些陷阱,但是如果您一旦获得了工作流程,这就是解决问题的好方法。

Git Subtrees可能是替代方法。

答案 1 :(得分:1)

作为子模块方法的替代方法,您可能需要考虑使用monorepo方法。换句话说,将两个项目都保存在同一个git仓库中。

在Git(或Visual Studio)中,没有什么要求您在使用存储库中的代码时使用存储库的根文件夹作为工作目录,因此每个单独项目中的当前开发人员工作流程可能工作很好。您还将获得的好处是,在同一解决方案中处理B和A会感到很自然。

取决于您的团队结构等,当然也有缺点(例如,如果没有良好的纪律,可能会有很多人在同一个存储库中工作,因此很麻烦),因此不要将其视为“银弹”-将其视为解决您的问题的众多解决方案之一;对它们进行评估,然后根据看起来适合您的情况选择一个(如果无法解决,请再次切换)。