2010-03-08 49 views
3

我正在將Visual SourceSafe代碼庫遷移到Subversion,並且遇到問題。Subversion是否有類似於VSS的鏈接?

這是我們目前的源代碼樹(在VSS)的簡化佈局:

project_root\ 
    |-libs\ 
    |-tools\ 
    |-arch_1\ 
    | |-include 
    | |-source 
    |-arch_2\ 
     |-include 
     |-source 

我的問題是在我們這兩個arch_文件夾。每個arch_文件夾將爲不同的硬件架構而構建,但兩個文件夾的內容幾乎完全相同。 arch_2中的文件僅爲arch_1中文件的VSS鏈接,只有少數例外。工作通常在arch_1文件夾中進行檢查,並且VSS鏈接確保此處簽入的任何代碼在arch_2文件夾中也進行更新。

移動到Subversion,是否有任何行爲將像VSS的鏈接?也就是說,有沒有辦法讓分開的文件夾中的兩個文件神奇地相互關聯,以便它們總是彼此同步(對一個文件的更改也會影響另一個文件)?

注:我知道這裏的正確答案是修復構建系統。大約十年前,這個項目的構建系統拼湊在一起,當時我們的編譯器/編譯系統不夠聰明,無法編譯兩個不同體系結構的源代碼相同的文件夾。感謝make和更新的編譯器,我們可以重新編寫構建系統以消除對兩個並行源文件夾的依賴。但是,這需要時間,我們目前還沒有(我們正在失去VSS服務器的許可證,並且正在被迫在相當短的時間內遷移)。我希望找到一個針對這個問題的Subversion解決方案,因爲目前我們的時間比重寫構建系統(下一步在我的待辦事項列表中!)要更順利地進行遷移。

謝謝你的幫助!

澄清:我已經研究過使用外部定義之前,並從我可以告訴他們只能在目錄級別上使用。我正在尋找一些在文件級別上運行的東西,因爲我們的一些目錄混合了共享/鏈接文件和非鏈接的特定於體系結構的文件。

回答

2

我已經調查之前,使用外部定義,並從我可以告訴他們只能在目錄級別上使用。

再看一遍。 Subversion 1.6支持文件級外部: http://subversion.apache.org/docs/release-notes/1.6.html#file-externals

+0

你說得對。它看起來像我Subversion文檔的硬拷貝(O'Reilly書)只涵蓋了Subversion 1.5。我將不得不仔細檢查我們的服務器上使用的版本。 – bta

+0

接受你的答案。我不是特別喜歡這個答案,因爲這意味着我現在必須對IT人員抱怨,直到他們升級到1.6,但這是有幫助的。謝謝 – bta

2

可以在arch_2

添加arch_1的內容作爲 SVN External

更新

File externals are support as of SVN 1.6

外部文件

對於Subversion 1.6的,你可以添加 單個文件exter使用與 文件夾相同的語法複製到您的作品 副本。但是,有一些 限制。

外部文件的路徑必須 將該文件放入現有的 版本化的文件夾中。一般而言,它使得 最有意義的是將文件直接放置在具有svn:外部設備 集的文件夾中,但是如果需要的話,它可以在版本 子文件夾中。相比之下, 目錄外部將自動根據需要 創建任何中間未版本的 文件夾。

外部文件的URL必須與 文件外部將被插入 的URL相同的存儲庫中的 ;版本庫文件外部文件 不受支持。

參見:SVN 1.6 Release Notes

+0

我編輯了我的問題,以澄清我正在尋找文件級而不是目錄級的東西。我很抱歉,我最初忘了提及它。 – bta

0

是的,有一種方法,至少對目錄執行此操作。這個功能被稱爲externals http://svnbook.red-bean.com/en/1.0/ch07s03.html它已經有一段時間了,因爲我已經使用了visual studio,但是即使在10年前,VSS鏈接仍然比SVN外部網站效果更好。然而,SVN外部功能。您通常最好將項目組織到庫(基本目錄中的通用代碼)中,然後您可以讓項目使用外部庫到庫中,而將一個項目放在另一個項目子目錄外部。最終SVN將具有外部文件以及目錄http://subversion.tigris.org/issues/show_bug.cgi?id=937

0

在SVN中最接近這一點的是使用Externals

外部定義讓您有:

不同的子目錄來自不同地點的倉庫,或者從不同的存儲庫。

相關問題