创建颠覆存储库的最佳实践?
我们的团队(5-10个开发人员)计划为.NET(Visual Studio)项目/解决方案(VisualSVN Server,TortoiseSVN / VisualSVN)采用Subversion。
组织新存储库树的最佳方法是什么?可以使用一个大型存储库吗?还是为每个解决方案/产品线等创建不同的存储库更好?
我们的项目可以通过这种方式进行分类(示例):
- 图书馆2
- ...
- Windows客户端
- 另一个Windows客户端
- Windows服务
- 工具B
- 软件2
- 应用程式2
解决方案
我们使用一个大的存储库,并且将所有内容结构化在子文件夹(/ project1,/ project2等)中,这似乎可以正常工作。
Apache项目有一个庞大的svn存储库,似乎对他们来说还行! :)
在组织方面,我们给出的结构看起来相当合理。我认为只要合理就行了(也就是说,将每个工具与每个项目混在一起可能是个坏主意,等等)。因此,选择适合东西(工具/,项目/等)。 Subversion也为在存储库中移动内容提供了很好的支持,因此我们随时可以根据需要进行更改。
我们只有一个如此结构的仓库。在主文件夹下,可以使用trunk / tags / branch /来设置由多个人处理和/或者正在积极开发中的所有内容。
我们可能会将那些trunk-tags-branch文件夹集放在我们列出的每个子文件夹下,除了一个或者两个不在积极开发中的库之外。
- SVN管理的观点,我更喜欢1个存储库。
- 程序员的观点,我更喜欢1个存储库。
- 服务器管理员我更喜欢1重新发布。
- 从安全角度考虑,最好不要将所有鸡蛋都放在一个篮子里。
存储库结构在某种程度上将是业务及其产品的独特之处。我们将其保存在一个存储库中。我们的结构有点像这样。
- 分行
- 标签
通常,在希望获得不同访问权限的任何情况下,我们都希望使用单独的存储库(即,某些开发人员应具有对一个项目的提交访问权限,但不能对另一个项目进行提交访问,或者一个项目具有公共只读匿名接口,而另一个项目则没有。 t)。
如果不需要那种级别的访问控制,尤其是如果我们需要能够在项目之间复制或者移动文件(即项目可能共享代码),则需要将所有内容都存储在一个存储库中。
将主干/标签/分支拆分放置在与我们可能作为单个程序包发布的代码块相对应的任意级别(即,考虑在何处进行标签)。刚开始时这并不重要,因为它们在内部与其他任何文件夹都没有不同,因此我们可以稍后移动内容,尽管当然没有这个问题比较整洁。
我的灵感来源:
- 带有Subversion的版本控制
- Subversion存储库布局
- 一个或者多个存储库
- 多个Subversion存储库
尝试将定期访问的资料(代码,脚本)与"一次写入并提交备份"的内容分开。仅仅为了更改几行代码而不得不检出/更新成千上万个jpeg很快就会变得乏味。
每个项目都有单独的存储库;但是主要的原因是出于访问的原因,再加上客户希望获得其来源的副本,我们可以将其附带历史记录的信息发给他们,而不必大惊小怪。如果我们查看conf中的配置文件,拥有一个适用于所有项目的通用配置文件并不难。我们这样做:
[general] anon-access = none auth-access = write password-db = ../../conf/passwd authz-db = ../../conf/authz
验证码:
[groups] AOS = nathan,mark [AOS:/] @AOS = rw frew = rw
然后当然是passwd:
[users] frew = password nathan = awesome mark = station