7

我有一个 subversion 存储库,其中包含多个子文件夹,对应于构成我的项目的各种应用程序、配置文件、DLL 等(我将它们称为“模块”)。现在我们开始“分支”成几个相关的项目。也就是说,每个高级项目都将使用一些模块,可能会在项目之间稍作修改。项目数量(~5)小于模块数量(~20)

现在我想弄清楚如何组织回购。逐个模块地保留顶级子文件夹是否有意义,每个项目都有子文件夹?或者顶层应该是每个项目,每个项目都有自己的模块子文件夹:

回购:

module 1
    Project 1
    Project 2
    ...

    Project 5
module 2
    Project 1
    ....
    Project 5
....
module 20
    Project 1
    ...
    Project 5

-或者-

回购:

Project 1
   module 1
   module 2
   ...
   module 20
Project 2
   module 1
   module 2
   ...
   module 20
...
Project 5
   module 1
   module 2
   ...
   module 20
4

5 回答 5

3

最好在顶层按Project进行组织,因为您将要检出整个分支并拥有该项目的工作副本。如果您按模块进行组织,则必须进行多次检出(您使用的每个模块一次检出)才能将项目构建到可用的程度。

将项目和模块分开可能是有意义的,例如:

Projects
   Project 1
   Project 2
   ...
Modules
   Module 1
   Module 2
   ...

如果您将它与 svn externals和/或供应商分支结合使用,您可以为需要不同模块版本的项目支持不同的分支,但当项目碰巧共享相同版本的模块时,仍然受益于拥有单个模块源.

于 2008-09-25T14:57:40.323 回答
1

我会按项目组织然后按模块(你的第二个例子)。主要原因是管理项目的开销比管理模块要多,至少对我来说是这样。

每个不同的项目都需要自己的构建脚本设置、属性文件等,并且在您的计算机上跟踪 5 个工作副本要比跟踪 20 个工作副本容易得多。

于 2008-09-25T14:45:23.707 回答
1

我更喜欢第一个。

虽然维护每个存储库确实需要额外的努力,但我喜欢我的修订号对项目有意义。

即我们的旗舰产品修订版为48123,我们的新项目修订版为31。如果您有跨存储库依赖关系,那么您可以使用svn externals。

于 2008-09-25T14:46:02.023 回答
0

我认为您使用“高级”来描述项目是什么表明您应该设置项目/模块。

但是,您可以设置模块和项目 - 即,它们在 SVN 存储库中处于同一级别。您的项目可以依赖模块,如果可能,项目可以提供特定的操作实现,将模块变成具有默认但可覆盖实现的基本模块。

于 2008-09-25T14:45:12.663 回答
0

我倾向于按项目组织,但现在总是。如果您的代码有访问控制方面的内容,请组织以最小化权限管理;这也可能导致存储库的每个团队组织。

顺便说一句:您似乎希望在一个大存储库中工作 - 我认为这很聪明,因为这意味着更好的历史处理:一旦您在存储库之间移动内容,您就会丢失历史记录。换句话说,我不同意 Ben Scheirman 对此的建议。

于 2008-09-25T15:05:04.427 回答