我正准备建立一个 SVN 存储库,并且想知道是否有人有一个很好的 repo 结构示例。我目前在想:
开发
.. 应用程序
.... App1
...... 主干
...... 分支
...... 标签
.. 数据库
.. 第三方
虽然这个结构可能可以容纳我们需要的一切,但我想让它更细化一些。有什么想法吗?
我正准备建立一个 SVN 存储库,并且想知道是否有人有一个很好的 repo 结构示例。我目前在想:
开发
.. 应用程序
.... App1
...... 主干
...... 分支
...... 标签
.. 数据库
.. 第三方
虽然这个结构可能可以容纳我们需要的一切,但我想让它更细化一些。有什么想法吗?
我们也一直在为此苦苦挣扎。
我们发现用不了多久,一些共享库就会成为多个应用程序的一部分,并且您希望所有内容都在同一个版本上。因此,我们决定将我们所做的一切都放在一个存储库中。我们已经以这种方式工作了 2 年多,并且发现它非常适合使用。
所有配置都有优点和缺点,但是通过拥有 1 个完整的存储库,您可以(几乎)确保您将所有文件放在正确的版本中。如果您使用多个主干,则可以使用虚拟文件夹或链接(我忘记了这个术语)来使其相互链接,但是要回到原来的位置非常困难。
请记住,每个配置都有优点和缺点,但对于一家规模不大的公司,我建议将所有内容放在一个带有一个父文件夹的单一仓库中。
我目前的方法是在一个存储库下打破逻辑应用程序边界上的系统。
例如,假设一个服务也有一个测试套件和一个数据库
/project1/application1/
trunk/
Src
Test
Database
tags/
branches/
application2/
trunk/
Src
Test
tags/
branches/
这允许我们将多个应用程序与一个项目相关联,但处理每个“逻辑”应用程序边界的发布控制。考虑你的发布控制需要在哪里/什么,并将它们设置为分支/标签/主干结构的位置。
我不喜欢整个存储库根目录下的单个trunk/branches/tags 文件夹,因为我不想签出整个主干,也不想弄乱部分分支签出。(您可能不同意,您的里程可能会有所不同等)
SVN 提供标签以在特定时间获取源树的“时间快照”(您可以将其用于发布等)。
但是,如果您打算使您的存储库“更细化”,也许您应该考虑设置多个存储库。
当然,在“主干”文件夹中,如果您不使用源代码控制,您应该设置任何正常的目录层次结构。
我们总是为每个单独的“解决方案”创建一个单独的 SVN 存储库。这个存储库只有一个简单的主干、分支和标签结构。
任何依赖的框架(我们控制源代码的地方)都有自己独立的存储库。然后,我们通常只将二进制文件(特定版本)包含到任何使用它们的项目中。
Having a single repo for everything means that you have a pretty good chance of ending up with a huge repository pretty fast. Which means things can get slow and a bit hard to track as well. Obviously, it depends on your exact use case, but personally I'd opt for per-project repositories and using svn:externals where needed.
Actually, I'd opt for a distributed VCS over SVN if possible, but to each his own...