2010-10-06 194 views
1

我是SVN的新手。我應該如何在我的計算機上組織項目目錄結構(不在REPOSITORY中)?它應該與存儲庫中相同(trunk,tags,branches)還是通常使用不同的結構?謝謝。如何組織SVN的項目目錄?

+1

我不明白。如果您不打算檢查它,那麼您的本地項目結構與存儲庫有什麼關係?他們彼此之間有什麼關係? – 2010-10-06 11:54:30

+0

我打算入住。但我不確定,如果我應該使用與存儲庫中完全相同的結構(即,我應該在光盤上有一個完整的「副本」存儲庫 - trunk,tags,分支目錄和所有子文件夾,例如/ branches/calc/expermentalVersion123在我的磁盤上,還是通常只使用我的磁盤上的子集或不同結構) – Petr 2010-10-06 12:07:31

回答

3

我傾向於使用的格式是僅檢出我需要的分支,標記或中繼。 我當然可以簽出多個分支,如果我需要出於某種原因,甚至可以多次分支同一個分支。

我沒有簽出整個項目的樹幹分支和標籤 - 這是不正確的。我喜歡鼓勵多個分支機構進行實驗和工作,以及在每個機會上都貼上標籤。當我對<感興趣時,將所有這一切降下來,其中1%會浪費所有人的時間。

爲簡單起見,我傾向於把所有這些工作拷貝在同一文件夾,命名爲這樣我就可以辨別出來:

如:

c:\development 
      \EmergencyFix-UICrash-V1.8 
      \Refactoring-ServerComponent 
      \NewCustomerUI 

在每個工作拷貝,這是一個直出現在存儲庫中的分支副本。重要的是,您可以簽出分支並在磁盤上的工作副本中擁有正確的結構。如果你必須手動移動東西,或者將東西複製到特定的位置,或者將不同的東西檢查到不同的位置,那麼大量的構建信息將獨立於源代碼運行(並且通常只在你的頭腦中,維護惡夢!)。把它們放在一起,讓你的源代碼控制工具爲此付出沉重的代價,你可能有機會控制你的構建。

如果你真的無法忍受鏡像分支結構的工作副本,可以利用svn:externals以可控的方式縮小差距。雖然我知道有些人認爲他們是反模式,但我覺得他們提供了一個非常有用的選項,當他以一種理智的方式使用時。

但被警告......有一個工作副本是二十多個其他庫檢出的混合,其中沒有一個是保證穩定定義在多個位置和改變不可預知的隨機子目錄不是以一種理智的方式使用外部..

2

從repo簽出後,資源庫結構將被複制到磁盤上。你唯一應該決定的是實際的根目錄名稱,就是這樣。

1

我會說完全取決於應用程序以及如何使用它。如果您正在使用不同的分支機構,則可以檢出整個存儲庫以輕鬆提交給每個分支機構。

如果您只有讀取權限,則應該只檢出您感興趣的分支(否則除了一些兆字節,它不會造成傷害)。

你可以問其他人在同一個項目中工作,他們如何組織他們的環境。例如。對於TYPO3 CMS,您可以將符號鏈接指向源文件夾,從而輕鬆檢出整個存儲庫。對於其他應用程序,這當然是不可能的。

0

如果您認爲合適,可以使用svn switch使本地目錄結構與存儲庫中的目錄結構不同。

+0

好的,但我的問題是經過時間考驗的做法。 – Petr 2010-10-06 12:47:22

+0

如果您需要手動切換項目以使項目生成,那麼源代碼控件中沒有所有源代碼信息。當嘗試生成可靠的可重複構建時,這是一個問題,尤其是如果您希望這些構建在單獨的構建服務器上自動發生 – 2010-10-06 14:19:08

+0

此外,隨機子文件夾的工作副本隨機切換到某個其他分支,即使它有意義爲構建,將迅速驅使你瘋狂。如果您必須切換,請切換到結帳的根目錄並期望它失敗。 – 2010-10-06 14:22:32