1

我的公司即将改用 svn,我正在寻找有关存储库结构的建议。

我们目前有大约 10 个项目和一个内部通用软件商店,其中一些项目使用,一些不使用。由于通用软件是在内部修改的,因此它本身就是一个项目。因此,尽管项目不相关,但它们可能共享相同的通用软件。

使用通用软件的项目总是指一个基线版本,即通用软件在任何项目下都不会被修改(除了通用软件项目本身)。

那么每个项目的单独存储库是否是最好的,使用 svn:externals 挂钩通用软件项目“标记”版本?

任何建议表示赞赏。

4

3 回答 3

1

我建议您根据http://svnbook.red-bean.com/en/1.7/svn.reposadmin.planning.html中的第一个示例将所有内容放在一个存储库中。COMMON 将是所有其他项目中的一个。

然后将 COMMON 的发布标签复制到每个项目,反映每个项目当前使用的 COMMON 的版本。

示例布局:

/common
  /branches
    /common_improvements1
    /common_improvements2
  /tags
    /common-1.0.0
    /common-1.0.1
  /trunk
/projA
  /branches
    /stable-1.0
      /common (=copy of /projA/trunk@oldrev =copy of /common/tags/common-1.0.0)
    /stable-2.0
      /common (=copy of /projA/trunk@somerev =copy of /common/tags/common-1.0.1)
    /projA_ongoing_fix_branch
  /tags
    /1.0.1
    /1.0.2
    /1.1.0
    /2.0.0
    /2.0.1
  /trunk
    /common (=copy of /common/tags/common-1.0.1)
/projB
  (similar structures)
/projC
  (similar structures)

好处:

  1. COMMON 和项目之间的轻松访问和可追溯性
  2. 如果有用,用户可以轻松地进行交互、测试和支持彼此的努力
  3. COMMON 发布标签的副本回答了这个问题:我们目前在这个项目中使用的是哪个版本的 COMMON?

导入期间的可选步骤:

您今天的所有项目是否有一个共同的布局,例如服务器上的文件结构或另一个版本控制系统?如果是这样,我建议您:

  1. 将整个布局导入新存储库中的文件夹,例如 /root/old_layout
  2. 将项目文件和文件夹移动到 svn repos 内的新布局中

这样做的好处是修订日志回答了以下问题:这个文件在我们之前的结构中在哪里?这在向开发人员传授新结构时非常有用,如果临时资源(例如顾问)在布局更改后返回。

于 2012-05-15T15:03:08.197 回答
0

所有开发人员都会在所有项目上工作吗?还是每个开发人员都只在一个特定的项目上工作?

如果是前者,我会考虑将每个项目作为一个分支(因为在分支之间切换比在存储库之间切换更容易)。您还可以非常轻松地为新项目创建新分支。

如果是后者,那么单独的存储库可能更清洁且更易于管理。

于 2012-05-15T09:46:02.917 回答
0

不要使用单独的存储库,将它们全部放在一个中(SVN 可以非常愉快地处理非常大的存储库)。这将使您在将来共享通用代码和分支方面受益。

无论如何,区别实际上只是顶层的一个额外“目录”。好处是更少的维护和更容易的访问。

于 2012-05-15T09:50:42.863 回答