在某些项目中,我必须处理多种编程语言(例如与C#或Java应用程序通信的Delphi GUI应用程序)。 Subversion存储库目前包含三个顶级分支,每种语言一个。
我是否应该更改此项并在后备箱中对项目的所有部分进行分组,如下例所示,以便更轻松地在项目级别进行分支和标记?
project1
branches
...
tags
...
trunk
csharp_app
delphi_app
java_app
...
project2
...
答案 0 :(得分:9)
当这些单独的子项目交互时,他们需要以锁步方式移动,并且您需要标记/分支/释放C#/ Java /任何组件在一起。如果它们不相关,那么我会提倡(可能)单独的存储库,或者在同一个存储库中单独的目录。但不是分支或标签。
分支用于管理同一代码库上的不同开发流。标签用于表示项目演变中的特定点。
我认为编程语言无关紧要。问问自己你的可释放性是什么,以及你需要如何管理它。我过去已经成功完成了包含Java和C ++的项目,并且语言不是问题 - 它保持了您需要管理的组件同步。
我不一定会为每种语言创建一个新的顶级目录。如果您的Java组件突然需要JNI层,会发生什么?令我感到震惊的是,实现反映在顶级目录结构中,这不应该成为一个问题。
答案 1 :(得分:3)
当您管理单个项目时,编程语言无关紧要。单个模块可以用各种编程语言编写,但仍然过于紧密耦合,值得分离。如果应用程序的每个模块(无论是否用同一种语言编写)都足够独立,可以被视为一个单独的项目(并因此成为独立版本),您可能希望将其分开。否则,不要这样做。
答案 2 :(得分:1)
我认为这不是一个好主意,因为理论上不同的组件可能会破坏兼容性,如果它们不能保持同步,那么很难回到最后一个正常运行的良好配置。
答案 3 :(得分:1)
是。标准是应用程序是否需要在彼此之间进行某些形式的功能同步,并且通信协议(API,共享代码,共享库)可能会随时间而变化。如果应用程序彼此无关,则单独存储库。在存储库中使用多种语言编写应用程序是无关紧要的。