1. 程式人生 > >svn版本庫的拆分及遷移子目錄等

svn版本庫的拆分及遷移子目錄等

需求
  • 庫的改名
  • 庫A匯入到庫B
  • 庫A的子目錄匯入到庫B
  • 庫A的子目錄匯入到庫B的子目錄
svnadmin dump
  • 此工具只執行在伺服器上
  • 檢視最新版本
svnlook youngest /var/svn/A# X+ J. V# s* c% Y& c
1 P& p5 z% k# E: f. p
  • 匯出整個庫的所有版本
svnadmin dump /var/svn/A > A-dumpfile

  • 匯出指定的23版本( N* a% [7 Z" ~" V5 l% e
svnadmin dump /var/svn/A -r 23 > rev-23.dumpfile

  • 匯出指定的100到200版本
svnadmin dump /var/svn/A -r 100:200 > revs-100-200.dumpfile
8 x0 a, G( I& M# k! j% Q! i
  • 用增量的方式匯出5 |3 X! U9 f1 @  Q
svnadmin dump /var/svn/A -r 0:1000 > dumpfile1 : }$ ~7 o. S, }
svnadmin dump /var/svn/A -r 1001:2000 --incremental > dumpfile2 . G$ A" M0 `& v) c( q  o, x" L) T3 _
svnadmin dump /var/svn/A -r 2001:3000 --incremental > dumpfile3
: d2 C( |* O+ U; p9 j( v

svnadmin load
  • 匯入到新庫中
svnadmin load /var/svn/B < A-dumpfile
- `# ?, m8 l8 K
  • 匯出庫的同時直接匯入到另外庫中
svnadmin create /var/svn/Bsvnadmin dump /var/svn/B | svnadmin load /var/svn/A- A3 i$ G6 m1 l4 P7 w

  • 匯入採用--incremental方式匯出的dump檔案
svnadmin load /var/svn/B < dumpfile1 : M7 G9 J1 d5 y: \1 w2 C
svnadmin load /var/svn/B < dumpfile2

svnadmin load /var/svn/B < dumpfile3
  L0 K) m1 c) F( w" y6 {" V* c
  • 匯入到指定的目錄下,支援多級目錄,如trunk/calc
svnadmin load /var/svn/B --parent-dir calc < calc-dumpfile

svnadminfilter
  • 選取指定的路徑,經測試只支援一級目錄,不支援子目錄,並且把子目錄移動到一級目錄後,此操作也無效
svndumpfilter include calc < repos-dumpfile > calc-dumpfile 5 g: ~0 E% Q( C, z. t, x
svndumpfilter include calendar < repos-dumpfile > cal-dumpfile
svndumpfilter include spreadsheet < repos-dumpfile > ss-dumpfile: ^8 U  G. U, @5 g" }

  • 如果採用多級目錄過濾會出錯:svndumpfilter: Invalid copy source path '/UploadDownload/trunk/UploadDownDemo'
  • 如果是對子目錄進行過濾,匯入庫後會顯示如下圖所示:無實際檔案匯入
  • 有用的引數
--drop-empty-revs#根本不生成空版本—忽略它們。
--renumber-revs#如果空修訂版本被剔除(通過使用--drop-empty-revs選項),依次修改其它修訂版本的編號,確保編號序列是連續的。

svnadmin hotcopy
  • 此工具可以用於備份版本庫,也可以用於遷移版本庫
rsvndump介紹
  • 此工具不是svn的標準命令,是第三方工具
  • 此工具不需要有伺服器的管理許可權就可以操作,支援子目錄的匯出,強大,靈活$ V8 b( Z& S" @7 g7 l
幫助 下載 安裝 tar zxvf rsvndump-0.5.5.tar.gz 5 d5 R2 @! N+ r# l8 M
cd rsvndump-0.5.5
./configrue * {6 j- E; y- C. b) J
make : ?$ C; u+ X6 n% N( h" d, w
make install & j3 g& f" N' l7 d9 S" D
#配置時會報錯,處理如下#APR could not be located. Please use the --with-apr option
[email protected]:~/rsvndump-0.5.5
$ apt-get install libapr1-devel或者yum install httpd-devel -y #centos#configure: error: Subversion could not be located. Please use the --with-svn option.
[email protected]:~/rsvndump-0.5.5
$ apt-get install subversion
[email protected]:~/rsvndump-0.5.5
$ apt-get install libsvn-dev#或者從原始碼上下載編譯安裝,從http://apr.apache.org/下載APR(如Apache Portable Runtime 1.3.3)及APR-util(apr-util-1.3.4.tar.gz)

使用
  • 支援http方式,並不僅僅是本地檔案方式,而且支援子目錄匯出; ]# F- w% k4 Q6 g  J
[email protected]:~/temp$ rsvndump http://hz-svn01/svn/c928/trunk/sourcecode/autobuild2.0 >abs2.0 ' C" B5 k/ _8 b, _& E  {8 q" D( b
Authentication realm: <http://hz-svn01:80> Subversion repositoryPassword for 'batuser':-----------------------------------------------------------------------ATTENTION!  Your password for authentication realm:<http://hz-svn01:80> ArcSoft Subversion repositorycan only be stored to disk unencrypted!  You are advised to configureyour system so that Subversion can store passwords encrypted, ifpossible.  See the documentation for details.You can avoid future appearances of this warning by setting the valueof the 'store-plaintext-passwords' option to either 'yes' or 'noin'(null)'.-----------------------------------------------------------------------Store password unencrypted (yes/no)? no* Dumped revision 1325 (local 1).* Dumped revision 1328 (local 2).* Dumped revision 1335 (local 3).* Dumped revision 1346 (local 4).* Dumped revision 1347 (local 5).* Dumped revision 1349 (local 6).* Dumped revision 1350 (local 7).* Dumped revision 1848 (local 8).) M3 @# p% K. X0 k- f# O
( p9 b3 U- U3 C" Q4 }: E# n
  • 匯入的話,請參看svnadmin load部分即可
  • 匯出的檔案是svnadmin dump相同的格式。

匯出如果帶字首,如:-prefix MMF_Android,會出現如下的情況:如果需要目錄請需要這樣設定:-prefix MMF_Android/

  • 字首不是目錄名,而是被增加到原目錄名的前面,可能並不是你需要的情況:- S) N+ d2 i: h1 w

如果匯入指定目錄的指定版本 -r X:Y ,這個X不能從1開始,需要從建立這個目錄的版本號開始,如果從1開始會出錯。


SVN1.7中帶了svnrdump工具
  • 與rsvndump工具是類似的,支援http等遠端方式$ }7 E+ f$ y! T# }# k
D:\csvn\bin>svnrdump help % q3 A  b2 l4 v# u
dumpdump: usage: svnrdump dump URL [-r LOWER[:UPPER]]Dump revisions LOWER to UPPER of repository at remote URL to stdoutin a 'dumpfile' portable format.  If only LOWER is given, dump thatone revision.Valid options:-r [--revision] ARG      : specify revision number ARG (or X:Y range)-q [--quiet]             : no progress (only errors) to stderr--incremental            : dump incrementally--config-dir ARG         : read user configuration files from directory ARG--config-option ARG      : set user configuration option in the format:FILE:SECTION:OPTION=[VALUE]For example:servers:global:http-library=serf--username ARG           : specify a username ARG--password ARG           : specify a password ARG--no-auth-cache          : do not cache authentication tokens--trust-server-cert      : accept SSL server certificates from unknowncertificate authorities without prompting (but onlywith '--non-interactive')--non-interactive        : do no interactive prompting


採用svnrdump load方式匯入 svnsync: E175002: DAV request failed; it's possible that the repository's pre-revprop-change hook either failed or is non-existentsvnsync: E175008: At least one property change failed; repository is unchangedsvnsync: E175002: Error setting property 'sync-lock':Repository has not been enabled to accept revision propchanges;ask the administrator to create a pre-revprop-change hook

解決: hooks目錄下建立一個pre-revprop-change檔案 #!/bin/bash ; h- g' Z* z) I7 _! i
exit 0;/ Y" u; h' V. P( F1 D4 W5 k; L6 D
) [. S& W/ {  V4 I$ W" x/ z) e
匯入後有一個版本號的問題,原庫的reversion為20000的話,新庫中的版本號至少也要增加20000?採用svnadmin與svnrdump方式都存在這個問題。
#--parent-dir支援多級目錄[[email protected] svndump]# /opt/CollabNet_Subversion/bin/svnadmin load /var/svn/A --parent-dir MusicPlayer/Common_SDK < i.dump
' h# j1 G- i: s9 N* L- a8 F
實驗後最好的方案4 J7 I: V6 D* M; Q2 j
  • rsvndump 第三方工具,svnadmin load 利用原生工具,不會出現多餘的版本號 #這種方式也不是很好的方式,因為如果遷移的目錄被新建及移動過,就會丟失歷史記錄。
  • 如果目錄被移動過,遷移時會丟失一些歷史記錄。
  • 採用rsvndump匯出的檔案,不能採用svnrdump的http方式匯入,中間會報錯。

  • 本來想採用svndumpfilter include --drop-empty-revs renumber-revs去過濾空的版本,可惜失敗了。
  • 採用svnrdump方式匯出的版本,竟然用svndumpfilter不能去過濾,要用先匯入,再用svnadmin dump方式匯出才能使用。
  • D:\>svnrdump dump  >B.dump 這個命令的使用,不需要有整個庫的許可權,只需要有子目錄的許可權即可。
, ?& I" s6 P) u) f" x, R

相關推薦

svn版本拆分遷移子目錄

需求 庫的改名 庫A匯入到庫B 庫A的子目錄匯入到庫B 庫A的子目錄匯入到庫B的子目錄svnadmin dump 此工具只執行在伺服器上 檢視最新版本 svnlook youngest /var/svn/A# X+ J. V# s* c% Y& c 1 P&a

svn版本遷移

同一個svn下有兩個版本庫:fundability、bj,想把fundability裡的內容帶資訊遷移至bj/fap目錄下 svn的dump命令命令可將版本庫(注意是以版本庫為單位,貌似不能對單個目錄進行操作)從第a次提交至第b次提交的所有相關資訊匯出成dump檔案,dump檔案中記

SVN版本遷移

1:經過SVN搭建,許可權配置和強制寫日誌的工作之後,今天的任務是把原來其它分散的各個版本庫統一遷移到新的版本庫,集中統一管理。要求不改變原有的版本庫的內容和版本號。2:要實現版本庫的無縫遷移,必須通過以下3個步驟: ①匯出舊的版本庫 ②匯入新的版本庫 ③通知客戶端切換版本庫

專案總結——也談svn版本遷移

【一.引言】 看了很多的關於svn版本庫遷移的部落格,寫的都挺好的。但在自己實踐的過程中還是沒有那一篇能讓我不查別的東西的。也就是說網上什麼都有但是自己用的時候還需要查好多的東西。算是做筆記吧。方便

SVN版本遷移到Gerrit中

第一步,根據專案需求,確定是否需要做版本庫的分割,即把一個SVN的專案分割為多個Gerrit project,在Git中實現類似與SVN中按目錄checkout的功能,非常不自然。因此第一步,需要從專案管理的角度,按照工程之間的依賴性,規劃好版本庫的分割。 第二步,實現在S

SVN版本修改URL路徑或者IP地址

mac 目錄 win linux 右鍵 window 服務 安裝 tortoise 服務器的IP地址或者URL變更,版本庫服務器的IP也要修改,因為當初安裝SVN URL沒有使用別名,所以使用的人都要修改客戶端的IP,以下是參考網上的資料。 1、Windows Tortoi

SVN版本搭建

1:安裝svn服務端  yum install subversion 2:建立版本庫:  svnadmin create /home/svn/myrepos  //目錄可以自定義 3:配置svnserve   上述版本庫/home/myrepo

阿里雲伺服器搭建svn版本

搭建和使用SVN 前言 Subversion(SVN) 是一個開源的版本控制系統, 也就是說 Subversion 管理著隨時間改變的資料。 這些資料放置在一箇中央資料檔案庫(repository) 中。這個檔案庫很像一個普通的檔案伺服器, 不過它會記住每一次檔案的變動。這樣您就

伺服器上的Svn 版本備份與還原

伺服器上的Svn 版本庫備份與還原                      

linux上搭建svn版本

svn配置 mount /dev/cdrom /media/cdrom 掛載光碟機 1.安裝svn伺服器端 yum install subversion 從映象下載安裝svn伺服器端 cd /usr/local/ //進入目錄,準備建立svn目錄 mkdir svn //建

contos7編譯安裝git搭建git遠端版本鉤子自動更新

一  安裝最新版git1.檢視yum源倉庫git資訊: yum info git初始化的阿里雲contos7的yum是1.8.3.1版本的;和官網不匹配;2.依賴庫安裝yum install curl-devel expat-devel gettext-devel opens

SVN版本實時備份整理

        因為公司最近SVN伺服器的檔案特別多,資料量很大,有500g,而用於備份的外接磁碟除了故障,因此需要在這段時間對svn伺服器上的資料做備份,所以特地研究了下svn庫的備份,因為平時不怎

linux 動態版本管理靜態

 一、庫命名         我們在linux下使用一些庫時,會發現其後面帶有一些數字,例如:libc.so.1 。形如lib*.so.x.y.z是有一套命名規則(*表示你給so的名字),x表示major version ,y表示minor version  z表示rele

subversion多版本導入導出相關遷移

svn subversion visualsvn subversion在實際項目研發中被大量的應用,但是往往在實際的環境中大多數的人還僅僅把SVN僅用於創建一個SVN庫,當然在subversion也是支持一個SVN服務多個版本庫的,最近剛剛好在做SVN的跨系統平臺遷移工作,就此就簡單的說一說

IntelliJ idea 如何配置svn,怎麼檢出,更新,提交專案,怎麼檢視版本

更多IntelliJ IDEA 的操作請參考:https://blog.csdn.net/qq_33442160 本文主要介紹在IntelliJ idea 下如何使用及配置svn. 1. 安裝sv

Git使用(二)版本創建文件修改

highlight -m git rm courier for mode software 1-1 mkdir 一、創建版本庫 1、安裝完成後,在開始菜單裏找到“Git”->“Git Bash”,蹦出一個類似命令行窗口的東西,就說明Git安裝成功! 安裝完成後,還需

SVN如何將版本url訪問地址中的https改為http

ima svn 面板 連接 協議 版本 nbsp .com 控制臺 1、選擇控制臺樹中的根節點,右鍵選擇“屬性”。 2、切換至面板“網絡”。 3、取消勾選項“使用安全連接協議(https://)”。 SVN如何將版本庫url訪問地址中的https改為http

windows下 svn刪除與版本的聯系

項目 edi tle folder sse delete com nbsp 5.0 當項目和版本庫有聯系時每個目錄下都會有.svn批量刪除時可將下列代碼復制 Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\S

mysql數據表字段使用DESC關鍵字報錯解決方法

直接 方式 sel max desc base 字段名 字段 方法 <!-- desc是MySQL數據庫的關鍵字,作為字段名直接使用會報錯 --><sql id="Base_Column"> id,mol,ip,port,name,t.desc,m

通過svn命令實現創建版本下的文件夾,並且可以操作訪問

AD 進入 -m tor 文件夾 磁盤 查看 authz 並且 1.Windows+R,輸入cmd進入DOS命令窗口 2.進入到計算機磁盤中的Repository 3.輸入命令:SVNadmin create test2,在當前目錄下創建一個te