2009-07-13 116 views
3

我們必須使用標準的主幹/分支/標籤的結構保存在SVN主Visual Studio項目。但是,此項目引用此結構外部的外部項目,因此當我們創建代碼分支時,所有對exteranl項目的引用都會失敗,因爲它們只有一個級別。最佳策略引用

即。行李箱/ MyProjectCode分支,所以由於層次的這種額外的水平,外部項目的任何引用失敗後變得分支/ MyFeatureBranch/MyProjectCode。

什麼是用盡可能少摩擦地創建新的分支,最好的辦法?我可以寫修改所有項目引用的腳本,或者我可以可以改變我的本地代碼佈局,使分支實際上水平從主幹下來,等於是一個新的分支將是在同一水平上。任何其他建議/最佳實踐?

+1

我看到你沒有在這裏接受答案,但想知道你是否對此進行了排序。我們有完全相同的問題,雖然我不想要數十個分支,但我們目前的解決方法意味着我們只能有一個讓文件夾深度保持不變。 – DilbertDave 2009-12-03 10:21:08

回答

3

當從Subversion簽出,你的工作目錄沒有反映同一目錄深度在庫中。例如使用目的的命令行:

svn co svn://server/project/trunk project 
svn co svn://server/project/branches/MyFeatureBranch project-feature

這樣的話,你將有兩個目錄並排稱爲projectproject-feature。這應該避免不同目錄深度和相對路徑引用的問題。

+0

不確定我遵循:-s 因爲我讀到它,這仍然會導致分支中的項目功能比主幹中的項目低一級。由於VS在.sln和.csproj文件中使用相對路徑,所有引用等都會中斷。 – DilbertDave 2009-12-03 10:24:27

1

我們分支,它涉及到產品的一切。因此,如果有5個項目是其中的一部分,我們將分支所有5個項目,以確保我們擁有該分支將要使用的完整副本。如果您遇到路徑問題,您可能需要查看名爲Junction的程序。

0

我在過去所做的那樣,對於一個開發工作室開發的許多項目和許多共同的參考,是保持在共享位置的外部引用。這可能是網絡共享,也可能是每個人在其硬盤驅動器上的商定(絕對)位置(結構像C:\ SharedLibs \ Library \ Version)。我們一直在sharedlibs在一個單獨的svn存儲庫,每個人都必須檢查到該文件夾​​SharedLibs,並建立我們引用這個絕對路徑。

另一種策略我已經應用是什麼,你還會發現在許多開源項目的:只是一起存儲您的項目引用。例如。你可以有一個帶有子文件夾src(用於源代碼)和lib(用於外部引用)的主幹。這可能是更好的做法:您只需構建項目(無論是中繼還是分支)就可以檢查並運行構建工具。

另一種選擇是使用了svn:externals屬性。通過此屬性,可以確保將來自存儲庫中其他位置(或其他存儲庫)的文件與您的項目一起檢出。從經驗中,我不推薦這個,但它是一個選項。閱讀關於它在svn書:http://svnbook.red-bean.com/en/1.5/svn.advanced.externals.html

0

我們在這裏有同樣的問題,我想過編輯.sln和.csproj文件替換絕對的相對路徑。我是有點擔心這樣做,因爲VS保持這些文件的,哪些是從撤消此,並在將來的某個時候(當一個開發保存項目,並檢查它的實例)恢復到相對路徑停止。

今天早上我有一個在我的上下班「清晰的時刻」:雖然我們存儲在專用支路文件夾中的分支,爲什麼我要看看成一個?

所以,代替:

C: 
|_ svnworkarea 
     |_ project 
      |_ branches 
       |_ project-feature 
         |_ source etc 

      |_ trunk 
       |_ source etc 

我現在有:

C: 
|_ svnworkarea 
    |_ project 
     |_ project-feature 
       |_ source etc 

     |_ trunk 
       |_ source etc 

作爲源文件夾現在在同一水平的相對路徑是有效的,如預期的參考文獻中加載。幹線仍然是完全獨立的,很容易識別,而項目特徵由有意義的文件夾名稱標識,例如, NewUIBranch。