2

我有许多不同的项目,大约 5 个,还有一些不同的开发人员,大约 15 个,有些项目处于颠覆状态,有些则没有。所有的开发人员都在使用 TortoiseSVN 开发基于 Windows 的机器,项目的代码是经典的 asp 和 asp.net 的混搭。什么是最好的,在最响应、最有用和易于管理的方式中,让所有项目都处于颠覆之下,并为所有开发人员提供经过身份验证的访问权限,包括读写权限?

需要考虑的一些事情是通过 svnserve 或 apache 提供服务,这意味着存在速度问题、易于管理访问/用户和密码,以及需要打开额外的防火墙端口(如果 svnserve)

还要考虑的是在一个存储库中拥有多个项目与每个存储库一个项目的好处/坏处。修订差异不是什么大问题,但是如果多个项目位于一个存储库中,则获取日志的时间可能会过长,但是,这是否会被更轻松的用户管理所抵消?

4

5 回答 5

4

• 我建议为您的所有项目使用一个存储库。它使为您的开发人员设置访问权限变得更加容易。另外,您只需备份一个存储库。不仅如此,它还使您能够轻松地在项目之间复制文件(并维护这些文件的历史记录)。这可能不会经常发生,但是当它发生时它会很好。创建新项目就像“svn mkdir”一样简单。

使用单个存储库并不会真正损失太多。您仍然可以根据需要配置每个项目的访问权限。

您的 svn 目录结构可能如下所示:

projects/
    proj1/
        trunk/
        branches/
        tags/
    proj2/
        trunk/
        branches/
        tags/
    ...

• 您的项目有多大?在 HTTPS 上使用 svn 效果很好,尤其是在您的网络连接速度很快的情况下。HTTPS 也是一个相当普遍的访问系统。除非您经常检查数百或数千个文件(或者除非您试图对具有数千个修订版的文件进行责备),否则速度差异对您来说可能不值得。在我们公司,我们使用 svnserve 并使用 kerberos 票证进行身份验证,但这很难设置。

于 2009-02-26T23:47:02.590 回答
3

我会推荐

  1. Apache,而不是 svnserve——它足够快,对防火墙和代理友好,并且用户管理员在任何一种情况下都是相同的工作。我还发现能够使用浏览器浏览我的存储库非常有用。

  2. 只有一个存储库,每个项目都有一个包含主干/分支/标签的文件夹。这比我一开始想的要灵活得多,而且在很多情况下你不需要trunk/branches/tags的子目录。管理单个存储库更容易,并且您拥有版本控制,因此您无需担心用户会搞乱其他人的项目或任何事情。

于 2009-02-26T23:49:32.537 回答
1

如果你们都在相对较快的线路上,通过 Apache 2 和 SSL 运行 SVN 是一个不错的选择。没有防火墙麻烦,并且可以通过多种方法完成用户身份验证。

我在另一个大陆有一个托管的 SVN 帐户,因为 SSL 不是那么快但可以接受,因为它是我们正在谈论的源代码,没有太多的数据传输正在进行。如果你有更近的服务器,我相信性能会相当不错。

多个存储库:我会说配置问题比可能的性能问题更糟糕。通过只保留一个存储库,您可以最大限度地减少配置。

于 2009-02-26T23:39:03.653 回答
0

我能想到的只有两种安全方式:通过 SSH 隧道使用 svn,或者使用 svn 通过 Web 服务器通过启用 SSL 的 HTTP 拉/推。

我会将每个项目保存在自己的存储库中,使用每个项目的标准主干/分支/标签格式作为存储库布局。这是一个更简洁的布局,因为每个事物都有自己的容器,如果其中一个 Subversion 数据库损坏或卡住,它不会影响所有项目的所有工作。

于 2009-02-26T23:28:39.717 回答
0

多个项目与单个项目:

如果代码很常见并且文件会移动,请使用一个存储库。如果代码是孤立的,请使用许多。请记住:

  1. 单个存储库使文件移动和目录重命名变得容易和可控
  2. 存储库中的更改会影响该存储库中所有位置的修订号
  3. 开发者物理目录结构可以不同于svn结构

验证

使用 apache,如果将 apache 配置为始终进行身份验证,则不需要 SSL。

<Location /svn/test>
    DAV svn
    SVNPath /svn/test
    <LimitExcept GET PROPFIND OPTIONS REPORT>
       AuthType Basic
       AuthName "Authorization Realm"
       AuthUserFile /svn/passwd
       Require valid-user
    </LimitExcept>
</Location>

您可以使用这些规则在结帐时要求输入密码。而您的密码位于该文件 /svn/passwd 中。

和...

也使用trac。它与 subversion 很好地集成,并为开发人员提供了一个远离 subversion 的界面来查看他们的文件/变更集等。

于 2009-02-27T00:25:53.773 回答