2008-12-10 47 views
0

我對集市(主要用於cvs,然後是顛覆,以及在我目前的工作中我們使用SourceUnsafe)相對來說比較陌生。我現在的開發環境的結構是這樣的:現在在分佈式版本控制系統(bazaar)中開發一個庫

 
\dev     (shared repository) 
    \trunk 
    \project1  (branch) 
    \project2  (branch) 
    \branches 
    \proj1-bugfix123 (branch of \trunk\project1) 
    \proj1-featureA (branch of \trunk\project1) 

,如果我決定PROJECT1的某些方面會更適合作爲一個庫(或組裝的,因爲它是一個C#項目),而不是項目中的類,什麼是構建這個市場的最佳途徑。我想出了兩種可能性,我認爲是可行的。第一個我認爲是「正確」的方式。

 
\dev     (shared repository) 
    \trunk 
    \project1  (branch) 
    \project2  (branch) 
    \libXXX 
    \branches 
    \proj1-bugfix123 
     \main   (branch of \trunk\project1) 
     \libXXX  (branch of \trunk\libXXX) 
    \proj1-featureA 
     \main   (branch of \trunk\project1) 
     \libXXX  (branch of \trunk\libXXX) 

這樣做的問題是,現在我需要記住更新解決方案文件,包括合適的項目,每當我做一個分支,不推,早,並還記得更改推回兩項目和庫在同一時間(例如,如果project1中的featureA需要更改libXXX才能工作)。

 
\dev     (shared repository) 
    \trunk 
    \project1  (branch) 
    \project2  (branch) 
     \libXXX 
    \branches 
    \proj1-bugfix123 (branch of \trunk\project1) 
     \libXXX 
    \proj1-featureA (branch of \trunk\project1) 
     \libXXX   

這種方法的問題在於,如果另外一個項目,說是project3想用libXXX並且在源頭控制,這將需要關閉PROJECT1的一個分支,與刪除PROJECT1文件。這將是混亂。

我想有一個第三個選項,就是在顛覆中整個樹幹是一個分支,但這似乎與我認爲它們應該在集市中工作的方式相反。

如果這是在SourceSafe中完成的,我只是不喜歡它的第二個例子,但在這兩個地方的libxxx文件夾,但是共享的,因爲這是唯一的機制SourceSafe中必須做進去。

回答

0

難道你不希望任何新的庫有自己的解決方案,並作爲其中的一部分,然後由其他項目引用。這樣庫只有一個版本正在構建(而不是每個解決方案)

+0

好吧,庫會有自己的解決方案,但是在project1中,它將具有UI的.csproj和庫的.csproj。問題出在哪裏。 – FryGuy 2008-12-11 01:57:27

1

直到Bazaar中的嵌套樹支持被修復,或者Bazaar開發類似於Subversion'Externals'的東西(如果我理解正確的話),將庫包含到Bazaar分支樹中的靈活性是有限的。

在此之前,將庫作爲​​一個獨立的項目維護在一個非常乾淨的「分支」中。如果您需要包含在項目中的庫(例如其文件位於項目自己的樹中),則將其複製。如果您要對該庫中的文件進行任何更改並將其返回庫中,請將這些更改返回到該庫的本地分支中,然後在其中進行合併/提交。

相關問題