使用Netbeans进行Subversion以及针对多个版本的良好实践

时间:2012-01-24 15:30:54

标签: svn netbeans

我正在考虑使用Netbeans使用Subversion,并想知道维护不同版本(分支)代码是多么容易。

我们目前拥有Sourcesafe,其中包含一个在Netbeans中维护的代码版本。现在我们有更多的客户,因此我们需要维护不同版本的软件。

据我所知,在Subversion中,你有一个trunk文件夹,它是代码的主要/工作分支。然后,由于需要不同的版本,您可以在分支下分支代码。因此,考虑未来事物的外观可能会使用以下层次结构:

product\trunk
product\branches\version 1.0.0.0
product\branches\version 1.0.0.1
product\branches\version 1.0.0.2
product\tags

在trunk和每个版本(即版本1.0.0.0,版本1.0.0.1和版本1.0.0.2)下,您具有Netbeans项目的相同文件夹层次结构,即:

src
lib
test

其中lib包含可由第三方开发的项目使用的JAR文件。 src将包含应用程序使用的数十,数百,数千个源代码类。 test希望包含等效源代码类的测试类。

nbproject是Netbeans专门用于存储各种项目设置的文件夹。 Netbeans通常在编译应用程序时创建一个dist文件夹,该应用程序是一个已编译的JAR文件及它在lib文件夹中引用的JAR文件。

我有几个问题:

  1. 有没有理由不将nbproject,lib和dist文件夹添加到版本控制中?
  2. 在Netbeans中维护不同版本的代码时,是否必须为每个源代码版本创建一个单独的Netbeans项目?基本上你可以在Netbeans的项目视图中使用:

    • 产品主干
    • 产品版本1.0.0.0
    • 产品版本1.0.0.1
    • 产品版本1.0.0.2
    • ......依旧......
    • 产品版本X.X.X.X
  3. 据我所知,Subversion具有比Sourcesafe更好的合并功能以及许多其他更好的功能。它还与Netbeans集成,这是另一大优势。我已经创建了一个带有主干和单个分支版本的测试存储库,其中我将分支版本中的文件合并回到主干,并在同一文件中存在多个冲突。

2 个答案:

答案 0 :(得分:1)

通常可以避免在目录和文件名中使用空格,因为它可以提高脚本编写能力。虽然编写脚本不是一个直接关注的问题,但您不希望关闭这样一个有用的工具(如果您将来需要它)。

所以试试这个

product/
product/trunk
product/branches/1.0.0
product/tags/1.0.0.1
product/tags/1.0.0.2
product/tags/1.0.0.3

其中一个通过从主干中复制来“制作”1.0.0分支。在稳定1.0.0分支的同时,1.0.1,1.1或2.0的工作可以继续在主干中而不会破坏1.0.0分支

现在,当您准备“释放”1.0.0分支的副本时,将其复制到“tags”目录中,并增加“发布”号。在将其复制到“标签”之后,您应该重新配置服务器,以便不允许对1.0.0.1,1.0.0.2等进行任何更新。否则,您将无法获得有关所发布内容的有效快照。

这只是一种做事方式,也是一种非常受欢迎的方式。也就是说,有许多变种,您可能会发现一种更适合您需求的改进。

答案 1 :(得分:0)

备注

  • 树的布局和dirs的名称只是条件协议,即你可以使用mainline / vesions / releases fe而不是trunk / branches / tags(合并/复制将与任何URL 一起使用)
  • 分支通常使用一些(长)时间用于WIP,因此 - 分离每个构建的分支不是,大部分时间(我看到)“每个分支的分支”策略

几个答案

  1. nbproject文件夹 - 我不知道它中存储了哪些数据,三方开发人员可以使用多少数据,但SCM的常见规则是“仅对数据进行版本控制,必须在任何新的地方开始与地面项目合作“。如果nbproject仅包含特定于您的或特定于此工作区的设置,则可以并且必须从存储库中排除
  2. 你可以,它更有用(因为nbproject的设置可能因版本而异,你不会在每个版本/分支的repo中存储设置?/),但“味道可能不同” - 你必须测试并检测你的方式
  3. 没有问,但回答 - dist文件夹必须被排除版本化 - 根据源代码管理,构建的工件没有任何历史价值(并且可以是总是很容易为任何重新编码的修订重新创建 - 请参阅答案N1关于“共同规则”)