【一.引言】
看了很多的关于svn版本库迁移的博客,写的都挺好的。但在自己实践的过程中还是没有那一篇能让我不查别的东西的。也就是说网上什么都有但是自己用的时候还需要查好多的东西。算是做笔记吧。方便我也方便其他将要使用svn版本迁移的人,我对这里涉及到的一些知识点再做一点总结。
首先是说一下svn中常用的一些命令。当然下面的命令都可以在命令窗口敲上svn help或svnadminhelp看到,这里只不过是一些对这些命令的一些解释。
如题说的主要是svn版本库迁移,当然也主要的介绍关于迁移所用的一些命令。
【二.基本思路】
要实现版本库的无缝迁移,必须通过以下3个步骤:
①导出旧的版本库
②导入新的版本库
③通知客户端切换版本库分支
首先来看第一步:导出旧的版本库。我们知道SVN提供了checkout命令和export命令签出,导出版本库中的内容。对于版本库内容比较少的情况这种方法可以采用。但是如果版本库中内容比较多,那么这种方法就显得很笨重了,而且还涉及到版本号改变的问题。所以首先摈弃这种做法。
我们知道Oracle提供了export/import命令来将数据库导出成一个二进制文件,然后导入。同样的SVN也提供了一对命令:dump和load。不同的是这两个命令导出的是文本内容(肉眼可以读懂)。而且还有一次性导出和增量导出,单版本导出与多版本导出等多种选择操作,就是这个了。
其次我们来看“通知客户端切换版本库分支”。在我们完成服务器端的版本迁移之后,必须通知客户端运行切换分支的命令,否则客户端的提交还是提交到旧的版本库去。SVN也为我们准备了这样的命令:svnswitch。
【三.相关命令】
1.dump命令:
首先需要备份数据库当然是需要把svn中所有的版本信息导出来。也就是备份版本库,这时我们需要的命令是dump命令:
说明:
svnadmin dump — 将文件系统的内容转储到标准输出。
通俗语法:
svnadmin dump 版本库文件及目录 > 备份文件及目录
如在命令窗口输入:
svnadmindumpF:\Repositories\Library > E:\Library.svn_dump
这样就会到处你的library项目的版本库备份文件到E盘的library.svn_dump文件中。其中svnadmindump不会保留修改文件的所有内容,而只是记录修改的部分。这样减少(有些情况下是非常大的)了svnadmin dump产生的转储文件的大小。
官方的说法及参数:
svnadmin dump REPOS_PATH [-r LOWER[:UPPER]] [--incremental]
svnadmindump命令用于导出整个Repository或Repository下的某个范围的修订版本。REPOS_PATH是版本库的路径,[-rLOWER[:UPPER]]用于指定导出的修订版本范围,由参数-r和两个用:号隔开阿拉伯数字组成。例如:-r0:50表示导出才版本0到版本50之间的所有修订版,-r是revision的缩写。
而另一个关键参数是--incremental。它使用增量方式来导出版本,即每次都只导出自上一个版本以来的修改。这样的好处是第一:可以把一个大的文件切分成若干个小的文件。第二:在版本库已经存在的情况下,我们只需要每次导出修改的部分,不需要每次都导出整个版本库的内容。甚至可以通过hook脚本每天晚上自动将当天的修改dump出来做备份用。
实例:
导出Library版本库的0-50个版本(当然你也可以导出剩下的版本)
当然如果导出剩下的版本导出命令多了一个--incremental的参数,这就是采用了增量的方式导出,导入时只需要按顺序导入即可。
2.load命令:
导出版本库文件以后我们当然要把导出的文件再次导入才能说是完成备份。
说明:
svnadmin load — 从标准输出读取
通俗语法:
svnadmin load 新的版本库名称及目录< 备份文件及目录
如在命令窗口输入:
svnadmin load F:\Repositories\Library2 --parent-dir 项目1 < E:\Library.svn_dump
这样就会把已近备份到E盘的library.svn_dump文件重新导入到Library2版本库下的项目1文件夹。如果想直接导入到Library2中则没有中间的"--parent-dir 项目1"版本库下的目录都必须写在dir参数后。
实例:
导入Library版本库的0-50个版本(当然你也可以导入剩下的版本)
注意:
当然如果导出Library剩下的版本导出命令多了一个--incremental的参数,这就是采用了增量的方式导出,导入时只需要按顺序导入即可。
3.svnlook youngest命令和svninfo命令
导出版本库时如果是导出指定版本的版本库,那么首先是必须要知道库中一共有多少个版本的。
当我们需要进行版本迁移的时候我们必须要知道当前文件的条目信息,
说明:
svnlook youngest — 显示最年轻的修订版本号。
svninfo — 显示本地或远程条目的信息。
实例:
显示Library版本库最年轻的修订版本号(注意:首先要到库目录下)
显示check out下来的文件的远程条目信息(注意:首先要到文件的存放目录下,本文件放在E:\Library文件下。)
4.svnswitch命令语法
svnswitch命令用于更新工作副本的URL。意即指向新的版本库位置。首先要注意的一点是我们即可以将整个工作副本指向新的URL,也可将工作副本下的某个目录指向新的URL。
说明:
svn switch — 将工作转向一个其他的库地址同步
通俗语法:
svn switch --relocate旧版本库地址新版本库地址(中间有空格)
官方的说法及参数:
svn switch URL [PATH]
switch --relocate FROM TO [PATH]
svnswitch命令用于更新工作副本的URL。意即指向新的版本库位置。首先要注意的一点是我们即可以将整个工作副本指向新的URL,也可将工作副本下的某个目录指向新的URL。
另外一个重要的参数就是--relocate。这个参数是否使用对于结果如何有很大影响,使用不当甚至可能会造成版本库不可用。其中有两条重要的规则:
A.假如工作副本只是映射到同一个版本库内的不同位置,那么使用svn switch即可
B.假如工作副本已是映射到不同的版本库,那么必须使用svn switch --relocate
上面第二条规则通常发生在我们需要将整个版本库迁移到另外一台机,或者同一台机的不同版本库时。这个时候使用--relocate会刷新原有工作副本中每个文件的URL头部。
实例:
迁移前后查看工作文件的远程条目信息是不同的。
【四.扩展】
当然命令窗口操作svn的命令不止有折几个,以上列出的只是版本迁移中用到的几个基本命令,有兴趣的朋友还可以查一下相关的资料。
【五.总结】
这篇博客的技术含量其实不高,但是对于从繁杂的知识中选出自己能用的知识来说,是一种锻炼,把用过的知识总结起来,慢慢才会成为自己拿来就用的东西。
相关推荐
### SVN版本库迁移方法 #### 一、概述 在软件开发过程中,经常会出现需要将Subversion(SVN)版本库从一个服务器迁移到另一个服务器的情况。这种迁移可能是因为硬件升级、服务器搬迁或是为了提高性能等原因。为了...
**SVN 版本库迁移**是当原始服务器出现问题或者需要更换硬件、升级软件环境时必要的操作。迁移过程确保了代码版本控制系统的连续性,不影响团队的开发工作。以下是两种常见的SVN版本库迁移方法: ### 第一种方法:...
本文总结了 SVN 版本库无损迁移与自动备份的方法,旨在帮助读者快速实现版本库的迁移和自动备份。下面将对标题、描述、标签和部分内容进行详细解释。 标题:“SVN 版本库无损迁移与自动备份” 该标题明确地表明了...
在进行VisualSVN Server版本库迁移时,首先需要明确迁移的场景需求。这些需求包括但不限于服务器切换、服务器重装系统、版本库整合以及数据备份等。该迁移过程适用于那些不频繁需要进行版本库迁移的场合。在进行迁移...
Windows环境下配置SVN、Apache和TortoiseSVN的过程,以及SVN版本库的迁移,涉及到多个关键知识点。首先,让我们深入了解这些组件。 1. **TortoiseSVN**: TortoiseSVN是Subversion的Windows shell集成客户端,提供...
总结来说,"SVN项目版本库模板"是提高团队开发效率和协作质量的有效工具,通过预定义的目录结构和文件,确保项目管理的一致性和专业性。合理利用模板,可以帮助开发者更专注于代码编写和项目开发,而非基础架构的...
在这个“svn版本库,桌面服务器,客户端打包版”中,包含了创建和管理SVN版本库所需的全部组件。 首先,让我们深入了解一下SVN的核心组成部分: 1. 版本库(Repository):这是SVN存储所有版本化文件的地方。...
本文档将详细介绍 SVN 版本库的备份与恢复过程,涵盖了从备份已有项目到恢复新的版本库的所有步骤。 一、备份已有项目 =============== 在本示例中,我们将备份名为 Test 的 repository(版本库),该存储器在目录...
### SVN项目迁移过程详解 #### 一、SVN项目迁移背景与目的 随着业务发展和技术迭代,企业常常需要对原有的Subversion (SVN) 仓库进行迁移,以便于更好地管理和维护代码。本文将详细介绍如何使用`svnadmin dump`和`...
利用svnsync同步SVN版本库,将之前主库上的SVN数据迁移到VisualSVN上,然后在实现版本库的远程自动备份,版本库备份到另一台机器上。
总的来说,"SVN版本库备份操作脚本"是一个实用的工具,通过自动化流程提高了数据安全性,减少了手动操作的错误可能性,同时也方便了版本库的管理。了解并掌握如何编写和使用这样的脚本对于任何使用SVN的团队来说都是...
标题中的“vss库迁移到svn库”是指将基于Visual SourceSafe(VSS)的版本控制系统中的代码库转换到Subversion(SVN)系统的过程。这个迁移过程通常是为了升级版本控制系统的功能,或者因为团队已经从VSS转向了对SVN...
svn新建版本库步骤,详细步骤,能够按照此步骤配置换成svn版本库
在本文中,我们将详细探讨如何在SUSE...总的来说,SUSE上的SVN安装和迁移过程涉及多个步骤,包括安装依赖、配置编译选项、处理错误、创建新版本库以及迁移旧版本库。理解这些步骤对于成功管理和维护SVN服务器至关重要。
1. `MakeVersion.py`: 这是一个Python脚本,它的主要功能是从SVN版本库中获取最新的版本号,并根据一定的格式将其转换为可以用于软件的版本标识。这个脚本通常会通过SVN的命令行工具与版本库进行交互,如`svn info`...
以上两种方法都是针对不再需要SVN版本控制的文件或项目。在执行任何操作之前,务必确认这是你想要的结果,并且已经做好了必要的备份工作。在实际操作中,根据具体需求和环境,可能会需要调整上述步骤或脚本内容。
将 SVN 项目迁移到 Git 是一个常见的操作,特别是在团队决定从 SVN 转换到 Git 这种更现代化的版本控制系统时。以下是一份详细步骤,涵盖了如何将 SVN 项目迁移到 Git,包括完整的命令行操作。 首先,你需要在 SVN ...
自动更新SVN版本库
SVN仓库是SVN系统的核心,它存储了项目的所有历史版本,包括文件和目录的更改。每个版本都有唯一的标识符,允许用户回溯到任意历史状态。在服务器更换或升级时,确保SVN仓库的完整迁移至关重要,以避免数据丢失。 ...
【VSS库迁移到SVN库的操作方法】 Visual SourceSafe(VSS)是一款由Microsoft开发的版本控制系统,而Subversion(SVN)则是一个开源的版本控制系统,被广泛用于项目协作和源代码管理。在某些情况下,用户可能需要将...