2010-11-03 59 views
0

我們假設一些名爲Graphics,Sound,IO等的共享庫項目以及使用這些項目的多個應用程序。 什麼是最好的,共享項目一個WC和每個應用程序一個WC?或者每個應用程序都有一個WC和一個獨立的圖書館WC?每個應用程序工作副本是否應有自己的庫項目工作副本?

I.e.

src 
| 
|---libs 
| | 
| |---graphics 
| |---sound 
| |---io 
| 
|---project1 
|---project2 

和:之間的區別

src 
|---project1 
| | 
| |---libs 
|  | 
|  |---graphics 
|  |---sound 
|  |---io 
| 
|---project2 
| | 
| |---libs 
|  | 
|  |---graphics 
|  |---sound 
|  |---io 

我可以看到優勢,在每一種情況下,但我覺得現實生活中的經驗將是很有益的在這裏。

回答

0

如果這些庫在代碼庫中被複制,它們以何種方式「共享」?

你看到在應用程序目錄下有libs有什麼優勢?

+0

在SVN中共享。建議每個應用程序的工作副本,以防您在多個應用程序上工作並對共享項目進行本地更改。優點主要在於如果我們使用了不同的共享庫分支 - 這些庫處於積極的開發階段,並不是非常穩定。 – 2010-11-03 18:21:03

0

除非您有足夠的理由支持所有應用程序庫的不同WC,否則我會建議使用一個WC作爲庫 - 這樣更容易維護這些庫(更新,構建)。

支持不同庫WCs的原因可能是特殊的穩定性要求,只有在需要時才移動到某個庫的新版本。

1

我建議,使圖書館成爲他們自己的項目....

graphics 
    +-- trunk 
    +-- tags 
    +-- branches 


io 
    +-- trunk 
    +-- tags 
    +-- branches 

sound 
    +-- trunk 
    +-- tags 
    +-- branches 

project1 
    +-- trunk 
    +-- tags 
    +-- branches 

project2 
    +-- trunk 
    +-- tags 
    +-- branches 

,並使用他們的項目裏面,你應該使用svn:的外部鏈接的IO,圖形等方式向特定項目它可以防止將源代碼複製到每個項目,並且您有一個單點可以在其中修復bug並執行增強等。

+0

他們是單獨的項目和svn:外部是計劃......我問每個應用程序是否應該抓住自己的外部依賴副本或全部共享它們。 – 2010-11-03 18:20:06

+0

你的意思是在工作副本級別上?是的,每個項目都應該使用它自己的。所以這些項目是彼此獨立的,可以單獨構建。如果你想分享依賴關係,你必須定義一些可以找到依賴關係的地方,這可能會導致一些問題。另一方面,如果你做某種構建系統,你應該確保構建separateley。所以你確定一切都是正確的。 – khmarbaise 2010-11-04 07:29:33

0

您是否考慮過使用Maven存儲庫來存儲二進制依賴項而不是源代碼控制系統?

ivy這樣的依賴管理器可以用來下載jar文件作爲構建過程的一部分。

+0

這些庫正在積極開發中,因此可能不值得。如果只是爲了修正錯誤,大多數開發人員將至少在一個庫上工作。 – 2010-11-04 07:52:17