2009-02-24 94 views
5

我有兩個存儲庫,它們位於不同的服務器上,稱它們爲repo-1和repo-2。SVN合併分支從一個回購進入其他回購幹線

要啓動兩個「中繼線」是相等的:

回購-1 /中繼線==回購-2 /中繼線

同時改變正在致力於爲回購-1 /軀幹和我正在與將更改提交到repo-2/trunk。

現在我需要將repo-1/trunk中的更改合併到repo-2/trunk中。

我以爲我會將repo-1/trunk複製到repo-2/tags/r1_20090224,然後將該標記合併到我本地的repo-2/trunk工作副本(即c:\ dev \ repo2-trunk)中。

有關如何做到這一點的任何建議?我試圖使用TortoiseSVN和執行「合併兩個不同的樹」,我用下面的設置:

來源:回購-2 /主幹 爲:回購-2 /標籤/ r1_20090224 工作副本:C:\ dev \ repo2-trunk

我也嘗試交換「from」和「to」...但沒有運氣。通過嘗試任何的這兩個合併選項,我不是結束了以下結果:

  1. 如果我從主幹合併標記(在我的本地回購-2/trunk的拷貝)我失去了我的樹幹更改並獲取標籤改變。

  2. 如果我從標籤合併到主幹(進入本地副本repo-2/trunk),我失去了標籤更改並保持我的主幹更改。

任何建議要做到這一點?

+1

@codecraig,你有沒有找到解決這個問題嗎? – vladr 2010-03-08 14:43:17

回答

1

首先找出樹木相同的版本。然後將該修訂版本與repo-1存儲庫的HEAD合併到您的repo-2工作副本中。

使用命令行客戶端是與此類似,如果要合併R123之間的變化和R456

svn merge http://domain.tld/[email protected] http://domain.tld/[email protected] repos2-workingcopy 
0

SVK也許能幫助,如果你發現自己不斷地管理隨着時間的推移多個存儲庫需要被每隔一段時間同步一次。

1

目前尚不完全清楚,但您需要從兩棵樹的基地合併,即兩條樹幹相同的點。

桑德打我,所以貸款給他,但這裏有一些更多的提示:

  1. 獲得這兩個倉庫,一旦聯合起來成一個儘可能; Subversion的設計並非如此。或者移動到DVCS如git或bazaar或...
  2. 如果你堅持使用Subversion,通常這種東西是用分支完成的,而不是標籤。標籤通常用作標記點,並不承諾。
1

如果svn merge是跨兩個站點/服務器失敗你:

svn: Unusable URI: it does not refer to this repository 

然後用下面的辦法:

  1. 識別哪個repo-2開始發散的修訂級別來自repo-1,比如123,那麼:
  2. svn co http://server1/repo-1/trunk
  3. svn diff -r123:HEAD http://server2/repo-2/trunk >repo2.patches
  4. patch -p0 -i repo2.patches
  5. 屏幕的任何衝突並加以解決
  6. svn ci --message "merged from repo-2"
+0

所以這兩個回購沒有共享任何歷史。例如,repo-1/trunk存在一段時間。 然後通過執行下列步驟創建repo-2/trunk: 1.導出repo-1/trunk並刻錄到CD 2.將CD帶到repo-2服務器,僅將「添加」爲repo-2 /行李箱 – codecraig 2009-02-25 01:06:49

相關問題