对于每个新版本,我都会包含标签,这最终会导致这种结构:
...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并将release tagbase标记配置到tagsFolder?
这似乎遵循svn book推荐的存储库布局,可以找到here
$ svn list file:///var/svn/single-project-repo
trunk/
branches/
tags/
如果是的话,我们该怎么做,如果我们有项目,不幸的是,项目会立即存储在根文件夹中?
我们应该创建文件夹,将数据移动到正确的位置并适当地配置pom,将标签存储在tags文件夹中并提交到trunk / projectFolder?
答案 0 :(得分:0)
您应该遵循最佳做法,因为它们不会被称为best practice
。我建议有这样的事情:
repository-root
+-- project1
+-- project2
+-- project3
在您的存储库的根级别,您可以将补充文件夹插入您的项目(组织内容等),如果您需要,但在每个项目中,我建议遵循颠覆的TTB结构,这意味着每个项目:
+-- project1
+--- trunk
+--- tags
+--- branchs
因此将不再需要Maven中的配置(约定优于配置)。
除了以上将单个项目存储在单个存储库中之外,不推荐在Subversion中导致与Git不一致的情况不一致。 所以在Subversion中,在一个Subversion存储库中存储数百或数千个项目都没有问题......
另一方面,如果你有充分的理由不使用默认值,你应该详细解释为什么你需要走不同的路径。