没有这样的东西,一个“普通的” svn目录结构。有在讨论不同的方法一节“规划你的版本库组织”的的
版本控制使用Subversion
的书(甚至是
/trunk,
/tags,
/branches名称只是约定,有没有区别标签和分支之间,除非你对他们的看法) 。
- 我是否必须更改svn目录结构,以使每个项目都有自己的三元组(trunk / branches / tags)?我猜答案是“是”。
不,你不 有 。参见例如Apache
ServiceMix源树:这是一个多模块的maven项目,但这些模块位于一个之下
trunk。另一方面,XWiki
不是单一产品,而是
其源代码存储库页面中详细介绍
的产品和项目生态系统,
它具有许多主干/分支/标签。您可以在此处浏览其存储库以了解布局。
但是,选择一种方法还是另一种方法,不仅取决于口味,还取决于您的发布周期(
mvnrelease稍后再讨论)。如果您的项目中的组件共享相同的版本(即ServiceMix),那么我将仅使用一个中继。如果他们有一个独立的发布周期(例如XWiki),我将使用多个“主干/标签/分支”结构,如该线程中所述:
myrepo + .links (2) + trunks + pom.xml + parent-pom (1) + trunk + pom.xml + project-A + trunk + pom.xml + project-B + trunk + pom.xml1)项目的父POM具有自己的发布周期。每个组件的POM都将其用作父对象(简单地使用
groupId和artifactId,否引用relativePath)。对于发行版,您必须先发行父POM。2)这是一种结构,可以轻松检出项目的特定分支,即通常是干线。一个Subversion用户检出myrepo / .links /
trunk以获得所有源的主修订版。诀窍在于,该目录包含svn:externals指向该项目所有其他模块(父pom,project-A,project-B)的主干的外部链接(即具有
属性)。此目录中的pom.xml从未发布,它仅包含用于三个模块的模块部分,以启用多模块构建。通过这种构造,您可以轻松设置分支,例如:myrepo + .links + branch-2.x + pom.xml
我已经多次使用此设置,效果很好。
- 如果更改结构,那么我会失去上面提到的哪些好处(我的意思是,使用Maven进行 *** 作会更复杂)?
让我一一回答。
借助svn externals,更新和签入都很容易。一个简单
svn update
或svn commit
全部完成。创建标签或分支很简单,因为maven版本插件会为您处理(标签和分支会更干净)。
将资源从一个项目转移到另一个项目看起来并不复杂。
全局重构(例如,更改常用类的包)很容易,因为您仍然可以对干线进行完整的检出。
合并可能不太容易。但是,您真的经常将类从一个项目移动到另一个项目吗?
- 用maven做这些的等效方法是什么?
如果需要,请使用maven版本插件和svn externals的建议布局之一。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)