2

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

我是否应该更改它并将项目的所有部分分组到主干中,如下例所示,以使项目级别的分支和标记更容易?

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

4 回答 4

9

当这些单独的子项目交互时,它们需要同步移动并且您需要一起标记/分支/发布 C#/Java/whatever组件。如果它们不相关,那么我会提倡(也许)单独的存储库,或同一存储库中的单独目录。但不是分支或标签。

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

我认为编程语言无关紧要。问问自己你的可释放是什么,以及你需要如何管理它。过去我在包含 Java 和 C++ 的项目中成功地做到了这一点,语言不是问题——它使您需要管理的组件保持同步。

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

于 2009-12-27T12:19:38.353 回答
3

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

于 2009-12-27T11:46:49.077 回答
1

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

于 2009-12-27T11:38:29.237 回答
1

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

于 2009-12-27T12:00:25.333 回答