在svn中组织解决方案

时间:2011-09-01 11:30:30

标签: svn version-control repository

如何在SVN存储库(或多个存储库)中组织多个相关 Visual Studio解决方案/项目?

E.g。我有两个共享几个常见项目的应用程序(解决方案):

+ Application_1
  - Company.Core
  - Company.Connections
  - Company.Data
  - Company.A1.DAL
  - Company.A1.BL
  - Company.A1.UX

+ Application_2
  - Company.Core
  - Company.Connections
  - Company.Data
  - Company.A2.DAL
  - Company.A2.BL
  - Company.A2.UX

没错,Application_1和Application_2共享相同的SVN root ,因为它们使用的是通用项目:

/svnroot
   /common
      /trunk
         /Company.Core
         /Company.Connections
         /Company.Data
   /app1
      /trunk
         /A1.DAL
         /A1...
   /app2
      /trunk
         /A2.DAL
         /A2...

这样做的原因是确保任何版本都具有公共文件夹中的最新可用程序集,并且每台计算机上的结帐始终是一致的。

所以我想知道的是:

  • 每个解决方案是否应该拥有自己的存储库?
  • 如果是,我如何分享常见项目并确保它们是最新的?
  • 我是否将公共程序集添加为已构建的依赖项(.dll)并将它们分别提交到每个解决方案存储库?如何自动化此类构建?

1 个答案:

答案 0 :(得分:2)

您如何设置存储库完全取决于您以及它对您的组织的工作方式。我已经看到了几种方法,多年来,没有找到可靠的建议。

修改

最后一部分写得很糟糕。我的意思是“没有可靠的建议”,没有一条建议说“你应该按照以下方式构建你的存储库......”所有的建议都表现为“这对我们有用”以及每一种方式布局回购工作为他们工作,布局各不相同。所以我的意思是“没有适用于每个组织的可靠建议”。

结束编辑

但是,您的存储库结构非常接近我们的存储。我们有数百个项目,以及几个根节点。所有这些都在同一个存储库中。

与您一样,我们有一个公共目录,用于保存具有常用功能的项目,我们将这些功能添加为其他节点中的解决方案中的项目的参考。这是我们在经过反复试验的过程中经过多次重组之后得出的结果,并且它对我们有用,所以我会对你的结构竖起大拇指。

回答您的具体要点

  • 我认为你应该拥有一个存储库,其中包含你所描述的结构。
  • 这使您可以在一次结账时获取代码,确保一切都易于维护并保持最新状态。只需添加您的参考文献,因为所有内容都在同一个仓库中。
  • 最后,我们的一般经验法则是,总是在必要时添加对项目的引用,并且不要检查二进制文件,除非您需要一个共同的dll,而您没有源(例如第三部分)零件)。例如,我们在“common”文件夹中的“共享dll”中有Microsoft.AntiXss dll和Idunno.Anti-Csrf dll。

作为旁注,这种结构也使得设置构建服务器变得容易。当我们设置了CruiseControl.NET构建服务器时,我们可以通过指向.sln文件进行一次检查并构建所有内容,就像在visual Studio中一样。将它放在一个回购中并遵循我刚刚制定的指导原则,这使得构建我们的构建变得非常容易。