2009-12-01 95 views
2

我已經開始製作一個項目。我想用subversion來存儲這個項目。我已經安裝了VisualSVN服務器和TortoiseSVN。使用SVN的項目代碼管理

該項目由幾個小項目組成。其中一些我每次都需要,其中一些不是。問題是:

  1. 我應該將整個項目存儲在一個subversion項目目錄中嗎?
  2. 怎麼樣的soulution文件(* .sln)?它應該存儲在SVN嗎?
  3. 項目是某種框架(稍後將用於其他項目)。但是我每次使用基礎項目時都需要它。是否有任何方便的方法來檢出/一次從不同的SVN目錄中導出我的基礎和框架項目?
  4. 如果我只需要在項目的一部分上工作,我該怎麼做?
+0

或許你也應該考慮嘗試走出的VisualSVN客戶端。 – 2009-12-01 09:52:24

回答

5
  1. 是的,總之 - 但你可以在以後改變主意的

    的目錄結構的顛覆項目是:

    project/branches 
    project/trunk 
    project/tags 
    

    你會初步建成所有代碼都放在主幹中,然後在需要時再創建標籤和分支。

    你可能會考慮把所有的東西放在一個svn項目文件夾結構中,因爲它會更簡單(你不必亂搞解決方案文件)。

    如果您選擇在以後自己的項目中將項目分解成單獨的svn項目,則可以執行'svn rename'併爲其創建標準分支,中繼和標記文件夾。您只需修改解決方案文件中的引用或使用svn:externals方法即可。

  2. 絕對 - 您應該將所有內容都存儲在不是由構建生成的存儲庫中。創建svn:忽略生成的文件夾(如obj和bin目錄)上的屬性,因此'svn status'會在您忘記添加重要文件時爲您提供有用的反饋。

  3. 有一種機制svn:externals,它可以讓你創建一個到Subversion版本庫(或外部版本庫)中另一個地方的鏈接 - 這可能會幫助你從一個文件夾中檢出。您可能需要考慮對框架的特定標記進行svn:external引用,以便其他人對框架的更改不會中斷您的項目。

    svn:外部可以使事情變得相當混亂,所以謹慎使用。

  4. 你可以在文件夾層次結構的任何級別的顛覆檢查出

0
  1. 您可以根據您的目錄結構存儲項目。經驗法則是一個svn目錄下的一個csproject
  2. 是的,你應該在SVN中存儲sln。您可以將此sln放在您的項目目錄之一中(通常在您的GUI csproject文件夾中)
  3. 爲此,您需要使用SVN命令行來執行此操作;你可以爲此寫一個批處理腳本。
  4. 您可以檢出相關項目並進行處理。
+0

我能從AnkhSVN處理#3嗎? – 2009-12-01 09:40:08

0

1.)你喜歡它。這完全取決於你。你想處理幾個Subversion文件夾,還是隻想處理一個?

2.)是的,當然。 只保留用戶特定的文件(如.user)。

3.)不,也許吧。如果您使用AnkhSVN作爲Visual Studio項目,那麼您可以更新解決方案,並且所有項目文件夾都將隨之更新。

4)僅與該項目;-)

-1

爲我工作 - 經驗法則是1 SVN REPO = 1解決方案

I DO籤.sln文件爲好,並強制執行相同的目錄結構與所有的人一起工作的項目

+1

我不同意。您可以將所有解決方案存儲在單個存儲庫中。如果您有多個不共享源的團隊,則多個存儲庫可能是一個好主意。 – 2009-12-01 09:49:58

1

商店一切都在一個目錄下。在目錄的底部應該是解決方案文件。這也應該存儲在SVN中(使SVN在新機器上檢出解決方案更容易)。

對於框架項目 - 嘗試,包括它在溶液中,然後在溶液中的基礎項目引用它。

如果您只是需要對項目的一部分,則可以打通整個解決方案,只是在您需要的,或者只是籤該項目的部分工作。

0

你的Subversion版本庫的設置是一個有很多不同意見的主題。下面的答案是基於我個人的經驗和喜好:

  1. 我建議存儲在一個單一的存儲庫中的項目的多個模塊。這簡化了整個項目的檢查過程。將子項目放在主項目的子目錄中時,也可以單獨檢查各個子項目。
  2. 我不確定* .sln文件是什麼,但是如果需要構建項目,它應該在您的存儲庫中。如果它是生成的(或者可以很容易生成)並且是系統依賴的,它不應該是你的版本庫的一部分。
  3. 使用svn的externals feature可以包含其他存儲庫的一部分。
  4. 見我的回答上的點1
2

通常Subversion版本庫中有三個文件夾樹幹,樹枝和標籤。你會把你的項目放在後備箱裏。如果它們不直接相關,我會爲每個項目創建一個存儲庫。

是的,我保留.sln文件,但忽略.suo和cproj.user文件。我也忽略bin和obj文件夾。

如果您將「框架」項目保存在一個存儲庫中,則只需簽出中繼文件夾即可完成。如果您將其保存在另一個存儲庫中,則可以查看externals的概念

即使您需要在項目的特殊小部分上工作,通常也會檢出整個主幹。

SVN Book可以幫助您瞭解更多。

0

可能取決於你想如何組織事物,個體部分有多大以及對你有用。試驗一下。

您可能想要考慮的一件事是外部:(http://svnbook.red-bean.com/en/1.0/ch07s03.html)。這可以讓你有在拉其他存儲庫文件和文件夾

1

我已經建立了我們的內部SVN回購類似如下:

SVN-Root 
    - trunk 
     - Projects (for each project one folder, 
        Solutions are in separate folder) 
    - tag 
     - Projects 
    - branch 
     - Projects 

雖然,我已經知道了一組不同的像這個:

SVN-Root 
    - Solution1 
     - trunk 
     - tag 
     - branch 
    - Solution2 
     - trunk 
     - tag 
     - branch 
1

既然你正在考慮使用幾個SVN倉庫,你應該考慮以下幾點:SVN倉庫中的提交是原子的。提交適用於多個存儲庫的更改不適用。

即使你是唯一使用你的SVN倉庫的人,經驗法則是該系統被設計爲允許(理論上)任何人隨時更新,並且不會冒險獲取不能編譯的源代碼,因爲時機不佳。

總之,如果可能需要對文件A和B進行類似的更改以保持項目可編譯性,那麼A和B應該位於同一個存儲庫中。