你的SVN"项目"有多么精细:一个包含多个相关应用程序的大项目或每个应用程序一个"项目"

Pet*_*ahn 7 svn file-organization projects

我将项目定义为包含主干,分支,标签子目录的SVN目录.

在确定何时将项目拆分为两个或将多个项目合并为一个时,您使用什么标准? - 每个"项目"一个应用程序,共享源和资源共享项目? - 一个包含应用程序所有源和资源的大"项目"?

单个项目或多个项目都有其优缺点.我们正朝着一个单一的项目前进,我正在试图弄清楚这是否是正确的方法.

拆分项目可以更好地控制套件的不同部分如何包含更改.公共库可以是版本,不同的应用程序可以选择使用特定版本(maven dep管理方法).

拆分项目还会创建多个类层次结构,从而使代码整体难以理解,并可能导致代码重复.我认为整体结构的正确设计和组件之间的关系将是管理这一成本的关键.

统一的项目方法将使开发人员在设置工作空间方面更容易,并提供单个类层次结构.这是一把双刃剑,因为它还会向开发人员提供更多信息(太多的课程无法理解).

那么,当你试图决定在哪里结合以及在哪里拆分时,你会使用什么经验法则?

Vik*_*ram 5

为了简化维护,我们将与单个应用程序相关的所有项目都放在一个SVN Rep中,仅将应用程序的代码库集中在一个存储库中,还具有管理应用程序不同资源之间的相互依赖性的能力。

我们通常将资源分类到中继中的不同文件夹中。分类主要基于功能/模块分组或分层分组[DAL,BLL,GUI等]。这完全取决于您如何构造代码。希望这可以帮助。


Pet*_*ahn 1

感谢您的意见。我不会“选择”一个答案,因为我认为每个答案都有有价值的观点。避免过早的优化似乎很关键,就像暂时保持布局尽可能简单一样。我们正在转向包含应用程序的单个项目,因为 90% 的时间我们都是一起发布的。因此,每个项目一个应用程序使问题变得复杂似乎没有意义。即使我们使用 Maven,给定版本的所有 Maven 工件也可能来自同一个分支。如果需要使用 SVN 历史记录和鱼眼来保持理智,我们可以随时更改它。

我们将重构源布局,就像重构源一样。当一个项目因周长和依赖情况而开始“闻起来很糟糕”时,我们会分解它,但在此之前不会。我可能会使用时间周长而不是空间周长:构建和测试的时间,结账的时间。如果我有一个 1GB 的树,我可以在 < 10 分钟内检出并在 < 30 分钟内构建/测试,我真的不需要分解它,除非我需要经常发布它的一部分。

所以,感谢您的意见。这对于我为我的团队提出问题和评估选项确实很有帮助。