2013-07-05 90 views
0

我有一個半複雜的SVN設置,我需要配置。已有一家第三方公司正在開發的SVN存儲庫。我們要創建一個拉,並從他們的合併代碼本地資源庫,正在工作的整個生產環境上的開發者要編寫並提交到本地的回購協議的副本3個虛擬機和生產虛擬機,只有拉從當地回購。同步SVN服務器 - 高級設置

我需要一種方法來從遠程一個讓本地倉庫拉代碼,同時提供了一種從我們的本地提交審查修改過的文件,因此遠程更改不會覆蓋工作。

SVN diagram

+0

檢查SVNBook你的選擇。強烈建議在開始實施解決方案之前閱讀SVNBook。 http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.reposadmin.maint。複製 – bahrep

回答

1

這是有點複雜。我認爲你不希望你的本地倉庫是隻讀的,這使得你的遠程倉庫同步到你的本地非常困難。大多數svnsync方案都依賴於兩者是彼此精確重複的。

您需要跟蹤遠程存儲庫中的上次同步修訂,並使用svnrdump dump從遠程存儲庫中提取未同步事務的轉儲。我沒有這樣做,但看起來不錯。但是,你必須關閉你的本地庫,以提供遠程修改,你必須確保本地和遠程都在兩個不同的網址。

+0

是否有可能設置一個客戶端機器人從遠程回購並將文件推送到本地,檢查它的原始文件的mtime是否與本地回購文件的mtime相同?如果它們不同,不要將它們推到本地,而是通知開發者有關衝突。或者沿着這些線...... –

+0

@AlexanderIvanov - 存儲庫中的文件沒有_mtime_。您確實需要跟蹤從遠程獲取的最新修訂版本,並下載較新的修訂版本。版本號在本地和遠程版本庫中會有所不同,所以沒有真正的方法來說明這一點。我想你可以查看更改的時間戳並將其與本地存儲庫上更改的時間戳進行比較,但我認爲最好跟蹤所提取的修訂版。 –

+0

@AlexanderIvanov - 是的,**部分只有**,有一些技巧和*特殊* LocalRepo準備 –

0

它移動到DVCS時間,真的。遷移從SVN到Mercurial是不是兩個命令的成本大爲頭疼,解決乘法相關回購的問題(任何回購的量)。

但是,如果你還是喜歡SVN路(糟糕的方法在這種情況下):

  • 如果MASTER可以從地方到達你可以使用SVN與MASTER URL命令和得到的結果),你可以構建和用「供方分支」工作流程
    • 主樹(/樹幹?)安裝到本地資源庫以某個節點(LOCAL的主幹外),用svn:externals的
    • 地方發展發生在軀幹,像往常一樣
    • 從變化MASTER必須集成在使用不時主幹明顯合併
  • 如果MASTER不能從本地達成,但SVN客戶端(SVN上的筆記本),它可以與兩個庫進行通信,還可以發現
    • LOCAL 必須從MASTER轉儲創建了拯救主人的UUID負載階段
    • 地方的發展必須在樹幹不會發生,但任何其他自定義分支
    • 客戶端有一個)結賬|從主設備b更新自己的WC )將WC重新定位到LOCAL c)com MIT切換到本地(可能倒塌源修訂)從地方幹線
    • MASTER變化haveto被合併到開發分支