我有很多不同的项目,大约5个,还有许多不同的开发人员,大约15个,有些项目是颠覆式的,有些则不是。所有开发人员都在使用TortoiseSVN开发基于Windows的机器,项目代码是经典asp和asp.net的混合体。什么是最好的,如最具响应性,有用且易于管理的方式,让所有项目都在subversion下,并为所有开发人员提供经过身份验证的访问权限,包括读写?
要考虑的一些事情是通过svnserve或apache提供服务,这意味着存在速度问题,易于管理访问/用户和密码,以及需要打开额外的防火墙端口(如果是svnserve)
还要考虑在一个存储库中拥有多个项目而不是每个存储库一个项目的优点/缺点。修订差异不是一个问题,但是如果多个项目在一个存储库中,则获取日志的时间过长可能会因为更容易的用户管理而抵消了这一点?
答案 0 :(得分:4)
•我建议您为所有项目使用一个存储库。它使您为开发人员设置访问权限变得更加容易。此外,您只需备份单个存储库。不仅如此,它还使您能够轻松地在项目之间复制文件(并维护这些文件的历史记录)。这可能不会经常发生,但它确实很好。然后创建新项目就像'svn mkdir'一样简单。
使用单个存储库并没有太多损失。您仍然可以根据需要为每个项目配置访问权限。
您的svn目录结构如下所示:
projects/
proj1/
trunk/
branches/
tags/
proj2/
trunk/
branches/
tags/
...
•您的项目有多大?在HTTPS上使用svn非常有效,特别是如果您的网络连接速度很快。 HTTPS也是一种相当普遍的访问系统。除非你不断检查数百或数千个文件(或者除非你试图对包含数千个修订版的文件负责),否则速度差异可能不值得。在我们公司,我们使用svnserve并使用kerberos门票进行身份验证,但这很难设置。
答案 1 :(得分:3)
我会推荐
Apache ,而不是svnserve--它足够快,防火墙和代理友好,用户管理员也是同样的工作方式。我还发现能够使用浏览器浏览我的存储库非常有用。
仅一个存储库,每个项目的文件夹包含trunk / branches / tags。这比我最初想象的要灵活得多,在许多情况下,你不需要trunk / branches / tags的子目录。管理单个存储库更容易,并且您具有版本控制权,因此您无需担心用户搞乱其他人的项目或其他任何内容。
答案 2 :(得分:1)
如果您都处于相对快速的线路上,那么使用SSL通过Apache 2运行SVN是一个很好的选择。没有防火墙麻烦和用户身份验证可以通过几种方法完成。
我在另一个大陆上有一个托管的SVN帐户,因为它不是那么快但可以接受,因为它是我们所讨论的源代码,而不是太多的数据传输。如果你有一个更近的服务器,我相信性能会很好。
多个存储库:我会说配置问题比可能的性能问题更糟糕。通过只保留一个存储库,可以最大限度地减少配置。
答案 3 :(得分:0)
我只能想到两种安全的方法:通过SSH隧道使用svn,或使用svn通过Web服务器通过启用SSL的HTTP进行拉/推。
我将每个项目保存在自己的存储库中,使用每个项目的标准主干/分支/标记格式作为存储库布局。这是一个更清晰的布局,因为每个东西都有自己的容器,如果其中一个Subversion数据库被破坏或楔入,它不会影响所有项目的所有工作。
答案 4 :(得分:0)
多个项目与单个项目:
如果代码很常见且文件会移动,请使用一个存储库。如果代码是隔离的,请使用许多代码。请记住:
<强>验证强>
使用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的界面,可以查看他们的文件/变更集等。