2014-10-19 221 views
0

随着每个新版本我做的标签都包括在内,最终导致这种结构:Maven的发布插件 - tagbase配置 - 标签文件夹包含在项目

...VersionExperimentation/tags/VersionExperimentation-0.0.7/tags/VersionExperimentation-0.0.6/tags/VersionExperimentation-0.0.5/tags/VersionExperimentation-0.0.4/tags/VersionExperimentation-0.0.3/tags/VersionExperimentation-0.0.2-beta/tags/VersionExperimentation-0.0.2-alpha/src/main/java 

我POM看起来是这样的:

<scm> 
    <developerConnection>scm:svn:https://[..root svn folder]/VersionExperimentation</developerConnection> 
</scm> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <configuration> 
       <tagBase>[..root svn folder]/VersionExperimentation/tags</tagBase> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

很明显,标签应该位于根中,而不是位于项目所在的VersionExperimentation文件夹中,该文件夹在developerConnection中定义。

这里的最佳做法是什么?我们是否应该在SVN根目录下的某个文件夹内有一个项目,并且项目文件夹位于同一路径中?

像:

./projectFolder 
./tagsFolder 

其中DeveloperConnection是要指向projectFolder并向tagsFolder发布tagbase标签的配置?

这似乎遵循SVN书推荐的版本库布局,可以发现here

$ svn list file:///var/svn/single-project-repo 
trunk/ 
branches/ 
tags/ 

如果有的话,我们应该怎样做,如果我们有个项目,其中,不幸的是立即存储项目根文件夹?

我们是否应该创建文件夹,将数据移动到正确的位置并适当地配置pom,将标签存储在标签文件夹中并提交到trunk/projectFolder?

回答

0

你应该遵循最佳实践,因为他们不是什么都叫做best practice。我建议有喜欢的东西:

repository-root 
    +-- project1 
    +-- project2 
    +-- project3 

在您的存储库中的根级别,你可以插入补充文件夹到您的项目(组织东西等),如果你需要,但每一个项目中,我会建议遵循TTB这意味着每个项目的颠覆结构:

+-- project1 
     +--- trunk 
     +--- tags 
     +--- branchs 

这将导致Maven(约定优于配置)的需要。

除了上述存储在单个存储库中的单个项目不推荐在Subversion中引起,它与Git中事物运行不同的情况并不矛盾。 因此,在Subversion中,没有任何问题可以在单个Subversion存储库中存储数百个或数千个项目...

另一方面,如果您有一个非常好的理由不使用默认值,则应详细解释为什么你需要走不同的路。

+0

嗨,谢谢你的回答。为不同的项目创建不同的svn仓库的决定不是我的,我认为做出这个决定的原因是由于代码隐藏。只有那些需要查看代码的人才能看到它 - 他们只能访问与它们一起工作的存储库。我不认为这是最好的决定,但它不是我的。我喜欢你提出结构的方式。所以为了澄清 - 将这些项目移动到trunk文件夹并在同一个文件夹中创建标签文件夹,这是一个好主意吗? – Ev0oD 2014-10-19 12:07:28

+0

为了防止他人为此目的争取权限,并转向最佳实践。是。 – khmarbaise 2014-10-19 15:48:38

相关问题