什么更好?

server:1080/repo/projectA/trunk/...
                          branches/branch1
                          branches/branch2
                          branches/branch3
                          tags/tag1/...
                          tags/tag2/...
server:1080/repo/projectB/trunk/...
                          branches/branch1
                          branches/branch2
                          branches/branch3
                          tags/tag1/...
                          tags/tag2/...

<强> B:

server:1080/repo/trunk/projectA/...
                 branches/projectA/branch1
                 branches/projectA/branch2
                 branches/projectA/branch3
                 tags/projectA/tag1/...
                 tags/projectA/tag2/...
server:1080/repo/trunk/projectB/trunk/...
                 branches/projectB/branch1
                 branches/projectB/branch2
                 branches/projectB/branch3
                 tags/projectB/tag1/...
                 tags/projectB/tag2/...

您使用什么存储库结构?为什么?

有帮助吗?

解决方案

存储库管理章节“http://svnbook.red-bean.com/en/1.5/index.html”rel =“noreferrer”> SVN书籍包括规划您的存储库组织概述了不同的策略及其含义,特别是存储库布局对分支和合并的影响

其他提示

我们使用A,因为另一个对我们没有意义。注意,“项目”是指“项目”。关于SVN不一定是单个项目,但可能是几个属于一起的项目(即您将在Visual Studio中放入解决方案)。这样,您就可以将任何相关的组合在一起。所有分支,标签和特定项目的主干。对我来说很有意义。

通过分支/标记进行分组对我来说没有意义,因为不同项目的分支没有任何共同之处,只是它们都是分支。

但最终,人们使用两种方式。做你喜欢的,但是当你决定的时候,试着坚持下去:)

作为补充:我们为每个客户提供单独的存储库,即客户的所有项目都在同一个存储库中。这样你就可以这样立即备份单个客户,或者在不与SVN抗争的情况下提供客户拥有的任何内容的源代码。

我建议选择C:

server:1080/projectA/trunk/...
                     branches/branch1
                     branches/branch2
                     branches/branch3
                     tags/tag1/...
                     tags/tag2/...
server:1080/projectB/trunk/...
                     branches/branch1
                     branches/branch2
                     branches/branch3
                     tags/tag1/...
                     tags/tag2/...

我更喜欢将单独的项目保存在单独的存储库中。使用 svn:externals 可以轻松管理共享的代码库项目在两个或更多应用项目中。

我们使用设置B.因为一次检查/标记多个项目更容易。在svn 1.5中,可以通过稀疏结账,但不是一键操作。 如果某些项目之间存在隐藏的依赖项,则您希望使用设置B.

我们使用

/repos/projectA/component1/trunk - branches - tags
/repos/projectA/component2/trunk - branches - tags
/repos/projectB/component3/trunk - branches - tags
/repos/projectB/component4/trunk - branches - tags

我开始后悔。它应该更平坦。这会更好。

/repos/projectA/trunk - branches - tags
/repos/projectB/trunk - branches - tags
/repos/component1/trunk - branches - tags
/repos/component2/trunk - branches - tags
/repos/component3/trunk - branches - tags
/repos/component4/trunk - branches - tags

为什么呢?产品(组件,成品软件)永远存在。项目来去匆匆。去年只有一个项目团队正在创建产品QUUX。明年,该团队分散,一两个人维持QUUX。明年,将有两个大的QUUX扩展项目。

鉴于时间表,QUUX应该出现在三个项目存储库中吗?不,QUUX独立于任何特定项目。确实,项目确实有工作产品(文档,积压等),这些工作产品是完成工作的一部分,但不是工作的实际目标。因此,“projectX”表示“projectX”。该材料的存储库 - 项目完成后没人会关心的东西。

我参与了一个有三个团队的产品。协调工作的大问题是因为每个项目都独立管理它的存储库。有团队间发布和团队间协调。在那天结束时,它应该是一个软件。但是,正如您所猜测的那样,它是三个具有奇怪重叠和冗余的软件。

我个人使用以下存储库结构:

/project
    /trunk
    /tags
        /builds
            /PA
            /A
            /B
        /releases
            /AR
            /BR
            /RC
            /ST
    /branches
        /experimental
        /maintenance
            /versions
            /platforms
        /releases

还有一个图表,说明了如何使用这些目录。我还使用了特定的版本编号方法。它在存储库结构中起着重要作用。最近,我开发了专门用于软件配置管理的培训,其中我描述了版本编号方法以及为什么这个存储库结构最好。以下是演示幻灯片

还有我的答案关于“多个SVN存储库与单个公司存储库”的问题。只要您在问题中解决存储库结构的这一方面,它可能会有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top