我认为在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
答案 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
你应该怎么做?我会说这完全取决于项目的相互关系。如果项目都在相同的版本控制和发布计划下,我会将trunk
,branches
和tags
放在网址的开头。如果项目根本不相关,我会先放置项目,然后让每个项目都有一个单独的分支,标签和主干。
第二种方式的优点是,您不会混淆哪个分支或标记与哪个项目相关。它会增加标记和分支的名称空间,因为每个项目下都有自己的区域。
缺点是每次创建项目时都必须创建三个新目录,如果您正在进行常见发布,那么最终会为每个目录创建单独的标记。
哦,还有一个缺点:如果你在项目中使用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。使用标准意味着当新开发人员进入时,他们知道事情的位置,而不必接受培训。减少混乱。最大的区别在于相关是彼此之间的项目。如果它们全部分支,标记和一起发布,请使用一组通用的branches
,tags
和trunk
目录。如果没有,您可能最好为每个项目提供一组branches
,tags
和truck
目录。
答案 1 :(得分:0)
我们的设置方式是您的第一个例子
主机/ SVN /
..
项目A.
..
项目B.
..
项目c
..
等
它对我来说一直很好,我已经使用这种方法6个月了。