美文网首页
svn转git实践分享

svn转git实践分享

作者: shyingsheng | 来源:发表于2018-07-13 10:47 被阅读0次

很多公司都会碰到SCM工具转变的问题,时下git是最热门的SCM工具。

下面简单总结我在实施项目由svn转git的实际操作。

这里我们托管git的服务器用的是gitlab。

git提供一条非常有用的命令叫做 git svn, 它基本上就可以满足你完成svn转git的核心工作。git的最新版本都已经自带有git-svn功能可以直接用。

1. 首先在gitlab上创建一个project,权限管理和项目设定这里不展开了。

2. 得到SVN提交用户列表。因为SVN仅简单地列了每个提交的用户名,但是git的提交信息更丰富,最简单的git提交也必须有用户名和email地址。下面这条命令可以帮助你取到svn仓库所有的提交用户列表(user.txt)。

svn log -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > user.txt

3.修改提交用户列表,修改编辑每一行,如下例子:

shyingsheng = shyingsheng <shyingsheng>

变成:

shyingsheng = shyingsheng <shyingsheng@example.com>

4. clone svn仓库

git svn clone -T trunk <SVN REPO URL> --username=<svn account> --ignore-paths="^(?:pub|installer|intermediate|framework)" -r 90441:HEAD -A user.txt trunk

我所用到的参数说明:

-T trunk是指仅仅clone trunk一条分支

--username=<svn account>是指用哪个账号执行git svn命令,这个账号必须有svn仓库的clone权限

--ignore-paths="^(?:pub|installer|intermediate|framework)"是指在转换时,忽略掉svn的pub|installer|intermediate|framework这些目录

-r 90441:HEAD是指从90441这个commit开始到HEAD,比90441老的commit全部丢弃

-A user.txt 是指用户账号清单,必须是svn和git两个系统中都存在的用户集合

5. 转换svn:ignore属性到.gitignore

git svn show-ignore > .gitignore

6. 上传到gitlab

git remote add origin <gitlab REPO URL>

git push origin master

7. 如果在转换阶段svn上又有提交的时候可以同步到git上

git svn fetch

git merge remotes/trunk #如果有冲突解决冲突,并且git commit

git push origin master

8. 当然如果你仓库里一些代码脚本hardcode了svn相关东西,请做相应修改。还有你的Jenkins CICD 工程

至此,完成一个svn仓库到git的转换。

references:https://john.albin.net/git/convert-subversion-to-git

相关文章

  • svn转git实践分享

    很多公司都会碰到SCM工具转变的问题,时下git是最热门的SCM工具。 下面简单总结我在实施项目由svn转git的...

  • SVN迁移Git

    SVN迁移Git ①本地SVN库转本地Git库 情况一:不想保留svn提交记录 删除svn目录文件中的.svn文件...

  • SVN & Git转

    PS:本文所有$符号之后为在终端中执行的命令。 版本控制系统 版本控制 版本控制(Version Control)...

  • 版本控制工具svn

    git和svn是现在主流的两种版本控制工具,git的一些语法之前分享过,今天给大家分享一点关于svn的用法;svn...

  • 从svn迁移到git

    我使用了十几年的svn,然而现在我转投了git的怀抱~ 关于svn和git的使用 我不会在这里讲如何使用svn和g...

  • 使用git管理svn项目

    git svn init http://xxxxxxx (svn co 的地址)git svn fetchgit ...

  • Android build.gradle 使用 Svn,Git

    Svn 读取Svn Revision Number 读取Svn日志 读取Svn Tag(不会) Git 读取Git...

  • SVN迁移Git

    参考:GIt - 迁移到Git 构建user.txt 关联svn用户和git用户。 用git svn导入svn库 ...

  • [转载]svn转git

    转自:Joe(http://aidevjoe.github.io/2019/03/22/将 SVN 仓库转换成 G...

  • SVN迁移至GIT记录.md

    最近公司开始转向git,要求所有svn库迁移至Gitlab,除了SVN,公司在用的还有TFS也要求迁移,算是彻底转...

网友评论

      本文标题:svn转git实践分享

      本文链接:https://www.haomeiwen.com/subject/cdirpftx.html