文件夹中的多个svn项目

时间:2014-04-04 14:17:02

标签: svn version-control project

我认为在SVN中设置项目的最常用方法是host/svn/projectA/trunk。但是,如果有多个相关的项目,我们可以将它们放在一个公共父文件夹下,还是必须在svn根目录下呢?

即。

host/svn/projectA/trunk

host/svn/projectB/trunk

host/svn/projectC/trunk

host/svn/parentFolder/projectA/trunk

host/svn/parentFolder/projectB/trunk

host/svn/parentFolder/projectC/trunk

2 个答案:

答案 0 :(得分:2)

您可以随心所欲地设置Subversion。 Subversion中的各种目录对Subversion本身没有意义。你的意思就是它。例如,我知道很多人不使用trunk,而是将main放在他们的branches目录下。这样,一切都是一个分支,可以使事情更容易谈论和记录。

标准方式(并且它只是一个标准,因为大多数人这样做)是两种方法之一:

/trunk/proj1
/trunk/proj2
/branches/1.2/proj1
/branches/1.2/proj2
/tags/1.2/proj1
/tags/1.2/proj2

Vs以上。

/proj1/trunk
/proj2/trunk
/proj1/branches/1.2
/proj2/branches/1.2
/proj1/tags/1.2
/proj2/tags/1.2

有时你会这样看:

/trunk/proj1
/trunk/proj2
/branches/proj1/1.2
/branches/proj2/1.2
/tags/proj1/1.2
/tags/proj2/1.2

你应该怎么做?我会说这完全取决于项目的相互关系。如果项目都在相同的版本控制和发布计划下,我会将trunkbranchestags放在网址的开头。如果项目根本不相关,我会先放置项目,然后让每个项目都有一个单独的分支,标签和主干。

第二种方式的优点是,您不会混淆哪个分支或标记与哪个项目相关。它会增加标记和分支的名称空间,因为每个项目下都有自己的区域。

缺点是每次创建项目时都必须创建三个新目录,如果您正在进行常见发布,那么最终会为每个目录创建单独的标记。

哦,还有一个缺点:如果你在项目中使用svn:externals(除非在某些非常特殊的情况下,你通常不建议这样做,并且你使用相对 URL,你第二种方式会弄乱你的系统。

我们有一个特殊的Ivy项目,它是我们所有软件包的外部项目。常春藤包是一种将Ivy集成到现有项目中的方法,没有太多困难。我们在URL的前面有标签,主干和分支目录。在项目的根目录中,您将属性:

$ svn ps svn:externals ../ivy.dir ivy.dir .

这是我们的布局:

/branches/1.2/ivy.dir
/branches/1.2/project
/trunk/ivy.dir
/trunk/project
/tags/1.2/ivy.dir
/tags/1.2/project

../ivy.dir表示上一个目录,然后下到ivy.dir项目。当我分支项目(和Ivy项目)时,svn:externals将不必编辑,因为它将指向同一个分支。当我标记时,我也同时执行ivy.dir项目。同样,svn:externals的网址不会更改,因为它们指向同一个标记。

因此,您可以按照自己的方式设置Subversion。使用标准意味着当新开发人员进入时,他们知道事情的位置,而不必接受培训。减少混乱。最大的区别在于相关是彼此之间的项目。如果它们全部分支,标记和一起发布,请使用一组通用的branchestagstrunk目录。如果没有,您可能最好为每个项目提供一组branchestagstruck目录。

答案 1 :(得分:0)

我们的设置方式是您的第一个例子

主机/ SVN / ..
项目A. ..
项目B. ..
项目c ..

它对我来说一直很好,我已经使用这种方法6个月了。