为.NET解决方案设置Git存储库

Gau*_*aui 13 .net c# git projects-and-solutions visual-studio

我有15个C#项目的解决方案,我正在尝试为它们建立一个高效的git存储库.我应该在该级别上创建存储库还是在解决方案下为每个项目创建存储库?

WebServices/
|- WebServices.sln
|- WebService1/
 `- WebService1.csproj
|- WebService2/
 `- WebService2.csproj
Run Code Online (Sandbox Code Playgroud)

该解决方案有一个项目引用,../framework/framework.csproj它是一个单独的存储库,所有其他项目都有引用.解决方案下的项目没有任何关联,但它们都使用框架.

我希望框架的任何更改都会传递给项目.

你有什么指导我如何以最好的方式实现这一目标吗?

Ste*_*tty 12

如何设置存储库没有一个答案.这取决于您的具体需求.

您应该问自己的一些问题包括:

  1. 是否所有项目都将单独发布和版本化?
  2. 这些项目是否真的相互独立?
  3. 您的开发团队是如何构建的?个别开发人员是否坚持单一项目?
  4. 您的框架项目是否稳定?
  5. 您的构建过程是否单独构建每个项目?

假设以上所有的答案都是"是",那么我会这样设置:

  • 继续在自己的存储库中维护框架代码,并使用NuGet将其发布到内部服务器(如ssube的注释中所示).
  • 为每个项目创建一个单独的存储库,每个库都有自己的解决方案文件

如果您可以对上面的#5(可能还有#1)以外的所有人说"是",那么我会再添加一个存储库,其中包含每个项目的子模块和构建服务器可以使用的全局解决方案文件.如果添加新项目,则必须记住也要更新此存储库!

如果你必须对#2说"不",那么只需构建一个存储库.

如果你不得不对#3说"不",那么你必须在分离代码和开发人员在repos之间切换之间进行判断调用.您可以创建一个包含子模块的单独存储库,但如果您的所有开发人员都使用该存储库,那么您实际上只是引入了新的维护而几乎没有收益.

如果您的框架不稳定(#4),那么您可能希望将其作为子模块包含在任何这些情况中.我建议一旦它变得稳定,那么你会考虑删除子模块并在那时切换到NuGet.