51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

svn仓库迁移到git仓库

# svn 仓库迁移到 git 仓库 {#svn-仓库迁移到-git-仓库}

当前主流的版本管理系统当 git 莫属, 可能一些老的项目用的还是 svn,那么怎么将这些 svn 项目迁移到 git 中呢? 当然同时会把 commit 提交日志一并迁移过来。
本文讲述迁移步骤。

# 1. 创建项目作者文件 {#_1-创建项目作者文件}

提示

需要收集 svn 项目的作者信息, 供后续步骤使用。

文件的格式如下:

zhangsan = zhangsan <zhangsan@gmail.com>
lisi = lisi <lisi@gmail.com>
wangwu = wangwu <wangwu@gmail.com>

文件中每一行的格式:[svn 的名字] = [git 上的名字] <[git 上的 email]>

有 2 种创建方式

  • 手动创建
    手动创建/root/users.txt 文件
    将当前项目的作者补充到 users.txt 文件中即可。

  • 自动生成
    可以通过 svn 命令自动提取出作者信息, 并生成 user.txt 文件
    执行如下命令
    svn log ^/ --xml | grep -P "^<author" | sort -u | perl -pe 's/ (.*?)</author>/$1 = /' > /root/users.txt

    (py3.6) wangshibiao@wangshibiao:/data/workspace/demo$ svn log ^/ --xml | grep -P "^<author" | sort -u | perl -pe 's/<author>(.*?)<\/author>/$1 = /' > /root/users.txt
    (py3.6) wangshibiao@wangshibiao:/data/workspace/demo$ cat /root/users.txt
    zhangsan =
    lisi =
    (py3.6) wangshibiao@wangshibiao:/data/workspace/demo$
    

    完善 users.txt 中的 git 信息 部分。

# 2. 将 svn 项目拉取为 git 项目 {#_2-将-svn-项目拉取为-git-项目}

git 命令原生支持将 svn 项目克隆到本地,并自动转换为 git 项目
命令格式:

git svn clone svn项目的svn地址 --no-metadata --authors-file=/root/users.txt git项目名称

若您没有必要迁移所有的提交日志, 您可以仅拉取某个版本以后的提交记录。只需补充参数-r 即可。

git svn clone svn项目的svn地址 --no-metadata --authors-file=/root/users.txt git项目名称 -r版本号:HEAD

提示

若拉取失败,并提示 Ignoring error from SVN, path probably does not exist,则可能是某个版本的日志有问题。
可通过-r 指定版本号, 仅拉取该版本号之后的提交记录。

# 3. 添加远程仓库 {#_3-添加远程仓库}

git remote add origin 远程仓库地址

# 4. 推送到远程仓库 {#_4-推送到远程仓库}

将本地的 git 项目推送到远程仓库。 git push -u origin master

赞(3)
未经允许不得转载:工具盒子 » svn仓库迁移到git仓库