1. 程式人生 > 實用技巧 >VisualsvnServer跨版本庫遷移目錄且保留日誌

VisualsvnServer跨版本庫遷移目錄且保留日誌


title: VisualsvnServer跨版本庫遷移目錄且保留日誌
categories: 實用教程
date: 2019-10-16 10:30:33
tags: [SVN,Visualsvn Server,程式設計開發,實用教程]
thumbnail: https://user-images.githubusercontent.com/24422140/74628026-7860bb80-518f-11ea-834d-f36ec373377a.jpg

有這樣一個問題,
現在有一份程式碼code在版本庫Nine.net/Nine.Basic/下,現在想把它移動到JamBlog/source/下

環境

├─VisualsvnServer
│  ├─Nine.net
│  │    │─Nine.Basic
│  │    └─xxxx
│  ├─JamBlog
│  │    └─source

需要達到的目的

1. 將程式碼移動到新的版本庫

2. 將原始的提交記錄保留

本來打算用svn move來做的,後來發現因為是不同的版本庫,所以這個想法走不通

一下以Windows為例,使用的是windows10

    主要分為幾個步驟:

    I 進入VisualSVN Server,服務端,遷移命令都是server端執行
    II 匯出需要遷移的程式碼庫
    III 過濾匯出程式碼庫中需要的程式碼
    IV 匯入過濾後的程式碼進入新的程式碼庫

實現

I 進入VisualSVN Server安裝目錄,

注意,svn命令是在svn client端執行的,svnadmin svnserver svndumpfilter都是在svn server端執行的

命令:

cd C:\Program Files\VisualSVN Server\bin

II 匯出需要遷移的程式碼庫

命令:

指令格式:svnadmin dump 版本庫源目錄 > 目標檔案

svnadmin dump D:\同步資料夾\OneDrive\Repositories\Nine.net > Nine.netBack

命令解析:
將“D:\同步資料夾\OneDrive\Repositories\Nine.net”整個版本庫匯出至“Nine.netBack”這個檔案中;“prog1”檔案存放在當前目錄,且不含副檔名;

注意:
Windows下,“版本庫源目錄”必須為包含format檔案的目錄,是存放檔案的實際物理路徑,非SVN伺服器的相對路徑;

III 過濾匯出程式碼庫中需要的程式碼

如果需要轉移的源目錄非根目錄的,可使用svndumpfilter指令,將實際要轉移的源目錄從剛剛生成的檔案中提取出來,並放到一個新檔案中;在目標目錄下匯入時則使用這個新生成的檔案;否則轉移目錄就是根目錄則跳過這一步

svndumpfilter include Nine.Basic <Nine.netBack> Nine.netBack2

命令解析
將Nine.net中的Nine.Basic過濾出來,svndumpfilter include表示只保留制定的目錄和檔案,這句命令中指定的目錄和檔案就是Nine.Basic

注意:
此時過濾後生成了新的檔案Nine.netBack2,執行最後匯入的時候要注意別匯入了整個版本庫的原檔案

IV 匯入過濾後的程式碼進入新的程式碼庫

1.
svnadmin load D:\同步資料夾\OneDrive\Repositories\JamBlog < Nine.netBack2
2.
svnadmin load D:\同步資料夾\OneDrive\Repositories\JamBlog --parent-dir source < Nine.netBack2

命令解析:
兩個命令二選一,本文章中需要匯入到source目錄,則選擇第二個命令
1.將“Nine.netBack2”整個版本庫匯入至“D:\同步資料夾\OneDrive\Repositories\JamBlog” JamBlog” 這個版本庫的根目錄下 ;
2.將“Nine.netBack2”整個版本庫匯入至“D:\同步資料夾\OneDrive\Repositories\JamBlog” JamBlog” 這個版本庫的source目錄下 ;
3.--parent-dir source 匯入到 source 目錄,此為版本庫下的目錄,若果是source下的xxx目錄
則需要在此更改目錄--parent-dir source/xxx,而不是在前面版本庫處增加子級目錄
注意:
匯入到指定目錄的時候需要先進行手動建立該目錄,例如這裡是匯入到source目錄,則我們需要先建立source目錄
***svn中區分大小寫,svn中區分大小寫,svn中區分大小寫

至此成功把程式碼庫成功跨版本版本庫遷移,且保留相關的提交記錄

參考文章:

https://blog.csdn.net/helenfish/article/details/9984555
https://blog.csdn.net/tianshijianbing1989/article/details/41980675