2009-01-20 77 views
3

我們已經完全丟失了我們的存儲庫,並且我們有8個開發人員進行了未完成的更改。從備份恢復被認爲是不可能的。Subversion在多個工作副本之間合併?

如果一個人可以訪問所有工作副本(文件副本或遠程共享),是否可以將工作副本中的更改合併到一個工作副本中?然後可以將最終的工作副本導入新的回購。

總之,你可以合併兩個不同的工作副本,而不需要服務器?

編輯:請不要poo我沒有備份;那部分超出了我的控制範圍。假定他們每晚都得到支持。

跟進:這就是我們所做的:

  1. 入門的所有開發人員最最新 工作副本。
  2. 將其導入到新的回購中。
  3. 從最新的工作副本修訂版本到最舊的版本,僅複製隨後提交的更改的文件。
  4. 沖洗 - 沖洗 - 重複6次。 (2位開發人員沒有未完成的更改)。
  5. 導出所有舊的工作副本,將其壓縮並存儲起來以便在需要時保持安全。
  6. 將發佈管理數據庫中的修訂版本更新至現在非常年輕的回購版。
+0

當面臨需要從多個開發人員合併工作時,我利用了Git。 Git非常擅長創建和合並分支。 git-svn工作得很好。基本上,你在SVN中標記你「開始」的代碼。使用git-svn創建基於該標記的git存儲庫。複製您更改的文件。檢查差異。提交更改。然後從SVN更新到最新版本(這會將SVN更改合併到本地更改中)。然後將您的更改返回到SVN。一個git repo可以用來執行多個合併和推送。 雅各布 – TheJacobTaylor 2010-02-15 22:47:20

回答

4

因爲你失去了你的資料庫(對不起,那),你也失去了整個歷史。

你現在所能做的就是從頭開始。

  1. 建立新倉庫
  2. 創建文件夾結構
  3. 第一個用戶的工作副本導出到一個新的文件夾
  4. 導入導出的文件夾到庫
  5. 所有其他用戶現在檢查取出新的工作副本
  6. 所有其他用戶現在將其原始工作副本「導出」爲新的工作副本

通過「導出」,我的意思是創建工作副本的副本,但沒有隱藏的.svn文件夾。

0

你的問題不是你已經失去了服務器,但回購本身。除了重新創建新的回購協議並仔細分類各種工作副本以供導入之外,我看不到您可以做什麼。祝你好運。

PS:你不好不具有備份...

PPS:這是哪門子的問題DVCS在每個開發人員的沙盒具有大部分回購的完整副本自然解決。

+0

我簡化了我的問題。還添加了關於備份的注意事項。 :D – hometoast 2009-01-20 19:21:51

+0

瞭解。無論如何,我的觀點依然存在,無論是因爲擁有自己對DVCS這樣重要的事情的備份:) – Keltia 2009-01-20 19:29:46

0

最簡單的方法是創建自己的服務器,創建測試回購,在其中添加一個(最穩定的)構建,併合並工作副本。但是,是的,你失去了所有的歷史,因爲你失去了舊的回購。

然後,您可以創建您的測試主要回購。

0

我會嘗試只選擇一個工作副本,然後在新的repo中執行導入操作,然後使用svn switch重新分配剩餘的7個工作副本,可能需要重新定位,以使他們相信它是相同的回購但重新安置。試着爲初始導入選擇一個工作副本,該工作副本對丟失的存儲庫沒有(或儘可能少的)結構變化:例如只是文件編輯。

當然,使噸的情況下,你的工作拷貝備份的上述不工作:)

+0

這就是我認爲我必須做的事。不知道WC如何應對高於頭部的轉速。是的,我已經制作了兩份自己的WC。 – hometoast 2009-01-20 19:24:52

+0

在初始導入之後,您可能可以使用svnadmin dump/load來修改修訂號#。不知道這是多麼容易,我從來沒有使用svnadmin轉儲的轉儲文件格式。 – nezroy 2009-01-20 19:37:06

0

Subversion保存一個文件在本地工作副本的原始版本。創建一個新的存儲庫,複製最舊的工作副本,恢復工作副本的COPY更改,然後將該工作副本導入到新的存儲庫。

SVN進口:http://svnbook.red-bean.com/en/1.0/re12.html

一旦導入,你可以使用svn開關--relocate重新指向其他工作拷貝到新的存儲庫,並提交更改。

SVN開關--relocate:http://svnbook.red-bean.com/en/1.1/ch04s05.html

1

嗨棘手的問題這一個。 但這是我會做的。

  1. 創建一個新的存儲庫。
  2. 創建8個分支和1箇中繼
  3. 導入開發人員在分支上工作。
    • 上分支2
    • 顯影劑1的分支1
    • 顯影劑2等等等等
  4. 然後開始合併來自分支1到軀幹。 而當你在樹幹上有一個穩定的狀態, 您繼續使用分支2等等等等

當你用這種可怕的工作做完, 教開發商有關早期,往往籤... 而如何用樹枝...

/約翰

0

從最原始的工作副本中創建一個與舊版本相同位置的新存儲庫(這樣您可以在新存儲庫中捕獲更多歷史記錄)。

如果無法正常工作並且無法正常工作,請從新存儲庫的簽出中放入.svn目錄。 (例如簽出,並刪除除.svn目錄以外的所有內容)

相關問題