VisualsvnServer跨版本库迁移目录且保留日志

Posted jamnine

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 FilesVisualSVN Serverin

II 导出需要迁移的代码库

命令:

指令格式:svnadmin dump 版本库源目录 > 目标文件

svnadmin dump D:同步文件夹OneDriveRepositoriesNine.net > Nine.netBack

命令解析:
将“D:同步文件夹OneDriveRepositoriesNine.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:同步文件夹OneDriveRepositoriesJamBlog < Nine.netBack2
2.
svnadmin load D:同步文件夹OneDriveRepositoriesJamBlog --parent-dir source < Nine.netBack2

命令解析:
两个命令二选一,本文章中需要导入到source目录,则选择第二个命令
1.将“Nine.netBack2”整个版本库导入至“D:同步文件夹OneDriveRepositoriesJamBlog” JamBlog” 这个版本库的根目录下 ;
2.将“Nine.netBack2”整个版本库导入至“D:同步文件夹OneDriveRepositoriesJamBlog” 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







以上是关于VisualsvnServer跨版本库迁移目录且保留日志的主要内容,如果未能解决你的问题,请参考以下文章

Windows上操作,VisualSVN Server迁移备份步骤

跨多个目录迁移版本

在Windows上,迁移VisualSVN server

版本控制VisualSVN Server更改SVN版本库存放路径的方法

hive跨集群迁移表

subversion多版本库及导入导出相关迁移