Svn 项目目录结构和源代码管理的最佳实践

Svn 项目目录结构和源代码管理的最佳实践,svn,Svn,我正试图找到一种规范的方法来构造我的源代码项目。我使用JetBrains IntelliJ IDEA和Subversion(1.6.12)(使用SmartSVN作为我的GUI) 我创建了如下的源目录结构: project + trunk + branches + tags 然后在trunk目录中打开一个新的IDEA项目。我写了一些代码:-) 现在,我要将该项目添加到我在SVN服务器上创建的新存储库中(svnadmin create myproject)。我正在使用SmartSVN

我正试图找到一种规范的方法来构造我的源代码项目。我使用JetBrains IntelliJ IDEA和Subversion(1.6.12)(使用SmartSVN作为我的GUI)

我创建了如下的源目录结构:

project
  + trunk
  + branches
  + tags
然后在
trunk
目录中打开一个新的IDEA项目。我写了一些代码:-)

现在,我要将该项目添加到我在SVN服务器上创建的新存储库中(
svnadmin create myproject
)。我正在使用SmartSVN 6.6.2

在SmartSVN中,我告诉它将代码导入一个新项目,并使用SVN+SSH将其指向我的存储库。SmartSVN警告我,我正在导入的目录不是常规的
主干
,因为我为它提供了顶级
项目
目录。我很困惑。我不应该将整个目录结构导入SVN吗


谢谢。

当使用标准Subversion目录结构时,您通常不会在您的计算机上签出所有的
主干
分支
标记
,因为一旦您有多个标记或分支,您的系统上就会有许多相同文件的副本。相反,您通常只签出了
trunk
,以后可能会将签出切换到指向分支或标记,或者在单独的目录中签出您感兴趣的分支或标记(如果需要处理它们)


我以前没有使用过SmartSVN,但听起来它希望在创建新项目时只提供
trunk
目录,因为它希望您只签出该目录。将您描述的目录结构放在服务器上是完全正确的,只是不希望在导入时得到它。请注意,如果您已经在客户机上的标记或分支文件夹中创建了任何内容,Subversion将不知道它们与主干的关系,因此只将它们视为完全独立的文件。但是,如果导入时这些目录为空,您应该很好,这只是警告您导入代码的方式有点意外。

您应该在服务器上创建trunk/tags/branchs结构,而不是在客户端。你办理的第一次登机手续将转到trunk

您希望能够从
/svn/repos/project/trunk
签出

另外,不要为每个新项目创建新的存储库,以支持代码的重用