2009-09-12 16 views
1

我經常有基於svn的項目,其中包含第三方組件,如TinyMCE(瀏覽器中的所見即所得)編輯器。這包括數十個可能包含數百個文件的文件夾。在顛覆項目中管理更新第三方組件的最佳方式是什麼?

理想情況下,當我想將TinyMCE更新到最新版本時,我希望能夠將頂級TinyMCE文件夾複製到我的工作副本中,提交更改並離開我去。

顯然,這是行不通的,因爲通過複製頂部,我將消除嵌套在工作副本中的所有現有文件夾.svn

手工更新所有文件需要幾個小時。

有沒有一種很好的方法來管理這與svn?

或者,是否有任何工具(在Linux或OS X上)可以幫助我更輕鬆地執行「手動」複製?

+0

我原以爲它**會**如果您複製新版本的第三方庫,.svn文件夾將保持不變。該副本應該只是替換現有文件並添加新文件,而不是刪除任何內容。 – quamrana 2009-09-12 20:47:48

+0

什麼樣的副本可以合併這兩個結構? – drewm 2009-09-12 20:49:43

+0

在Windows下,(有時按Ctrl-)拖放操作會執行此操作,但您必須確保您確實要覆蓋現有文件。額外的文件將被靜默地添加,預先存在的(.svn)文件夾和文件將保留,但遺憾的是從更新中遺漏的舊文件不會被刪除。 – quamrana 2009-09-14 21:41:11

回答

2

我不明白「顯然,這是行不通的,因爲通過複製頂部,我會清除所有通過工作副本嵌套的現有.svn文件夾。」你在使用哪種操作系統?

我使用Linux Web服務器爲我的SVN服務器和Windows機器工作。沒有「刪除」.svn文件夾這樣的東西:只需將文件複製到簽出的目錄中,並且由於它們已更改,我只需使用TortoiseSVN提交它們即可。

這不是保持結構的「最佳方式」。但它的工作。

磁盤空間通常不是一個問題,因此您通常可以創建第三方應用程序的存儲庫,因此您不必依賴互聯網訪問來構建/部署應用程序。

svnrepositories 
    myprojects 
    myprojet 
    third-party 
    tinymce 
     1.3 

而且他們通過BrianLy使用svn:externals屬性,如指出。

你可以指出互聯網上的外部資源。但請記住,缺點是資源可能處於脫機狀態,您需要訪問互聯網。

+0

我正在使用OS X.當您將一個文件夾複製到另一個文件夾時,會發生直接替換。沒有合併。其他系統是否合併?這聽起來很有用,但也很危險! – drewm 2009-09-12 21:42:25

+0

你設定了研究複製方法的道路。它看起來像標準的UNIX命令'cp -R'將執行一個類似於合併的副本,這對於我想要的來說足夠好,使用你所概述的工作流。謝謝。 – drewm 2009-09-12 21:50:06

+0

因爲我從來沒有使用OS X,所以我不知道這種「直接替換」的行爲。我很高興你能在這種情況下做出你所需要的方式。 :) – GmonC 2009-09-13 04:20:26

1

我想你應該看看svn:externals屬性。

+1

這不需要第三方組件也是svn版本化資源嗎?在這種情況下,它只是從網上下載的東西的文件夾。 – drewm 2009-09-12 20:40:47

1

「在顛覆中管理更新第三方組件的最佳方式」?

Vendor branches。作爲獎勵,您可以修改第三方組件的代碼,並且修改將因合併而在更新後保留。

0

使用svn:externals包括修訂鎖定參數-r {REV.NR。},這可以確保您不會以不合時宜的方式從第三方供應商svn-repository獲取更新。

然後,只需將-r {REV.NR。}參數設置爲外部存儲庫的最新版本,您就可以在自己的時間內升級到第三方組件的最新版本。

0

將庫版本包含到路徑中對我有用。通過這種方式更新版本,只需刪除舊版本,添加新版本並將引用指向新路徑。

$ svn del vendor/tinymce-3.4.2 
$ svn add vendor/tinymce-3.4.3 
$ # edit references to point to vendor/tinymce-3.4.3 

但是,如果你想要做的改動我會選擇供應商的分支機構上述評論的庫。

相關問題