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

时间:2010-09-21 15:44:08

标签: svn

我正在尝试用一种规范的方式来构建我的源代码项目。我使用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警告我,我正在导入除习惯trunk之外的目录,因为我给它提供了顶级project目录。我很迷惑。我不应该将整个目录结构导入SVN吗?

感谢。

2 个答案:

答案 0 :(得分:3)

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

之前我没有使用过SmartSVN,但听起来它在创建一个新项目时只希望给出trunk目录,因为它希望你只能检查出来。拥有您在服务器上描述的目录结构是完全正确的,它只是不希望获得导入的目录。请注意,如果您已在客户端的标记或分支文件夹中创建了任何内容,Subversion将无法知道它们与主干的关系,因此只会将它们视为完全独立的文件。但是如果这些目录在导入时为空,那么你应该没问题,它只是警告你以一种意想不到的方式导入代码。

答案 1 :(得分:0)

您应该在服务器上创建trunk / tags / branches结构,而不是在客户端。你做的第一次检查将转到行李箱。

您希望能够从<server>/svn/repos/project/trunk结帐。

此外,不要为每个新项目创建新的存储库,以便重用代码。