2009-12-27 67 views
2

在一些項目中,我必須處理多種編程語言(例如與C#或Java應用程序通信的Delphi GUI應用程序)。 Subversion版本庫目前包含三個頂級分支,每種語言一個。每種編程語言都有單獨的Subversion分支?

我應該改變這一點,並像下面的例子那樣將項目的所有部分分組在樹幹中,以使項目級別的分支和標記更容易?

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

回答

9

由於這些獨立的子項目進行交互,那麼他們就需要步調一致移動,你需要標記/分支/釋放C#/ Java的/不管組件一起。如果它們不相關,那麼我會提倡(也許)分開存儲庫,或者在同一個存儲庫中分離不同的目錄。但不是分支或標籤。

分支用於管理同一代碼庫上的不同開發流。標籤用於表示項目演變中的特定點。

我認爲編程語言是不相關的。問問你自己,你可以釋放什麼,以及你需要如何管理這個。過去,我已經成功完成了使用Java和C++的項目,並且語言不是問題 - 它使組件保持同步,您需要管理。

我不一定會爲每種語言創建一個新的頂級目錄。如果你的Java組件突然需要一個JNI層,會發生什麼?它讓我感到實現反映在頂層目錄結構中,而這應該不是真正的問題。

+0

是的,我寫了可釋放的東西進行交互。以步調移動是我需要的。 – mjn 2009-12-27 12:22:48

+0

你做到了。適當修改 – 2009-12-27 12:24:58

1

我不認爲這是一個好主意,因爲理論上的不同組件可以打破的兼容性,如果他們不保持同步起來會很難再回到過去的做工不錯的配置。

+0

哪個部分可能會中斷,是指項目構建過程還是遷移到新的目錄佈局? – mjn 2009-12-27 11:50:36

+0

把東西放在不同的中繼線上不會導致中斷。我只是說不同版本的各種組件不能一起工作。因此,C#版本20將不適用於java東西的版本5。如果你不得不回到第5版,你現在必須記住哪個版本的C#使用它。這可能不是很容易。 - 但如果一切都同步在一起,那不是問題。 – 2009-12-27 12:29:01

3

當您管理單個項目時,編程語言無關緊要。單個模塊可以用各種編程語言編寫,但仍然過於緊密以至於不值得分離。如果應用程序的每個模塊(不管它是否使用相同語言編寫)都獨立於獨立項目(因此獨立版本化),您可能需要將其分開。否則,不要這樣做。

+0

「緊密耦合」描述了我最想達到的目標。 +1 – mjn 2009-12-27 11:54:31

+0

其實「緊密耦合」是一件壞事。請參閱:http://en.wikipedia.org/wiki/Coupling_%28computer_science%29#Advantages_and_disadvantages – 2009-12-27 12:29:41

+2

緊耦合有缺點,是的。但是這是必須的。大多數任何庫/客戶端代碼都是「緊密結合」的。 – 2009-12-27 14:59:29

1

是的。標準是應用程序是否需要彼此之間的某些特性形式的同步,並且通信協議(API,共享代碼,共享庫)可能會隨時間而改變。如果應用程序與彼此無關,則需要分開存儲庫。在存儲庫中使用多種語言編寫應用程序是無關緊要的。