如何在Subversion下面管理几个不同的项目

这决定与你的项目的复杂度,如果你的项目是相关的,并且有可能要共享数据,那么最好的方式是通过子目录创建一个版本库。像下面这样子:

        $ svnadmin create /repo/svn
        $ svn mkdir file:///repo/svn/projA
        $ svn mkdir file:///repo/svn/projB
        $ svn mkdir file:///repo/svn/projC
如果你的工程是完全不相关的,并且他们之间不可能共享数据,这样最好创建几个独立的完全不相关的版本库。

        $ mkdir /repo/svn
        $ svnadmin create /repo/svn/projA
        $ svnadmin create /repo/svn/projB
        $ svnadmin create /repo/svn/projC
这两种方式之间不同之处在于: (由 Ben Collins-Sussman解释 <sussman@collab.net>):

在第一种情况之下,代码可以很容易的在两个项目之间拷贝和移动,并且操作的历史记录会被保存下来。('svn cp/mv'现在只能在单个版本库中工作。)
因为修订版本号是版本库范围的,在第一种情况下,对任何项目的提交都可能造成全局的版本冲突。所以如果有个人检出了‘projB’,并发现已经发生的10次修订,但是projB没有完全改变,这看起来有些奇怪。事实上,这无关紧要,只是一开始会感到有些奇怪。这就像每当人们向rapidsvn提交,而rapidsvn和svn在同一个版本库之下时,svn的状况。:-)
第二种情况可能更利于安全管理吗;可以很容易的使用Apache访问控制将每个项目隔绝(就用户和许可的角度来讲)。在第一种情况下,你需要在版本库放一个钩子脚本来区分不同的项目(“是否允许用户在特定的子目录提交?”)当然,我们已经准备了这些脚本供你使用。