每种编程语言单独的Subversion分支?

时间:2009-12-27 11:36:02

标签: java svn delphi repository directory-structure

在某些项目中,我必须处理多种编程语言(例如与C#或Java应用程序通信的Delphi GUI应用程序)。 Subversion存储库目前包含三个顶级分支,每种语言一个。

我是否应该更改此项并在后备箱中对项目的所有部分进行分组,如下例所示,以便更轻松地在项目级别进行分支和标记?

project1
  branches
  ...
  tags
  ... 
  trunk
    csharp_app
    delphi_app
    java_app
    ...
project2
...

4 个答案:

答案 0 :(得分:9)

当这些单独的子项目交互时,他们需要以锁步方式移动,并且您需要标记/分支/释放C#/ Java /任何组件在一起。如果它们不相关,那么我会提倡(可能)单独的存储库,或者在同一个存储库中单独的目录。但不是分支或标签。

分支用于管理同一代码库上的不同开发流。标签用于表示项目演变中的特定点。

我认为编程语言无关紧要。问问自己你的可释放性是什么,以及你需要如何管理它。我过去已经成功完成了包含Java和C ++的项目,并且语言不是问题 - 它保持了您需要管理的组件同步。

我不一定会为每种语言创建一个新的顶级目录。如果您的Java组件突然需要JNI层,会发生什么?令我感到震惊的是,实现反映在顶级目录结构中,这不应该成为一个问题。

答案 1 :(得分:3)

当您管理单个项目时,编程语言无关紧要。单个模块可以用各种编程语言编写,但仍然过于紧密耦合,值得分离。如果应用程序的每个模块(无论是否用同一种语言编写)都足够独立,可以被视为一个单独的项目(并因此成为独立版本),您可能希望将其分开。否则,不要这样做。

答案 2 :(得分:1)

我认为这不是一个好主意,因为理论上不同的组件可能会破坏兼容性,如果它们不能保持同步,那么很难回到最后一个正常运行的良好配置。

答案 3 :(得分:1)

是。标准是应用程序是否需要在彼此之间进行某些形式的功能同步,并且通信协议(API,共享代码,共享库)可能会随时间而变化。如果应用程序彼此无关,则单独存储库。在存储库中使用多种语言编写应用程序是无关紧要的。