svn迁移到git

  最近需要将项目从svn迁移到git,至于原因请忽略,至于svn与git区别优劣请自行百度。一共有两种方式可行:

第一种方式较为常见,但是会丢失之前svn版本提交记录,就是将svn checkout到本地然后上传到git上

详情参见:http://blog.csdn.net/hanhailong726188/article/details/46738929

第二种方式较为复杂,但是可以保留之前svn版本提交记录,执行命令如下:

git svn clone https://172.16.0.241:8443/svn/wsgjp/ -r 76896:HEAD --no-metadata --authors-file=user.text -s
cp -Rf .git/refs/remotes/origin/* .git/refs/heads/
rm -Rf .git/refs/remotes
git remote add origin ssh://[email protected]/welkin/batchserver.git
git push origin --all

知识点:

如果svn上的commit次数非常多, git svn clone 就会非常慢,一般超过几百个版本就要大概十分钟。此时可以在clone的时候只下载部分版本,
命令:git svn clone -r<开始版本号>:<结束版本号> <svn项目地址> [其他参数]
说明:其中76896为svn版本号,HEAD代表最新版本号,就是只下载svn服务器上版本76896到最新的版本的代码.

authors-file:必须指定svn帐号在git中的映射

users.txt:存储svn账号与gitlab上账号的关联性,如下:

VisualSVN Server = wssf2014<zqhym***@gmail.com>
yqdong = yqdong<×××@163.com>......

格式: svn用户名 = git用户名<git用户对应的邮箱帐号>

注意: svn里面有的账号必须要做关联,否则clone会失败.比如上面的user11找不到是哪个开发人员,也不知道它该对应哪个git账号,那就随便指定一个git账号就行了,这样做的目的其实就是将user11在svn里面的所有提交日志关联到yqdong的git账号下。 转到git之后,原svn账号就无关紧要,各司其职了。

-s   告诉 Git 该 Subversion 仓库遵循了基本的分支和标签命名法则,也就是标准布局。
如果你的主干(trunk,相当于非分布式版本控制里的master分支,代表开发的主线),分支(branches)或者标签(tags)以不同的方式命名,则应做出相应改变。
-s参数其实是-T trunk -b branches -t tags的缩写,这些参数告诉git这些文件夹与git分支、tag、master的对应关系。

如果不是上述这种命名法则,那你需要使用 --tags--branches--trunk 参数(请通过 git svn help 自行了解)

  1. trunk指定导出仓库的主干项目路径。
  2. branches指定svn的分支项目路径。

svn文件标识图

时间: 2024-10-12 21:01:08

svn迁移到git的相关文章

坑死人不偿命,svn 迁移到 git

用git的人非常鄙视用svn的.因为要不断的开分支.而且也没有本地的分支这个概念. 但是git 作为一项技术,是一定可以被svn替代的.当然替代的方法是否繁琐另当别论,但一定是能被替代.svn同样也能被git替代.大概所有的技术都是一样.都能相互替代,只是你要为替代本身花费多长时间. git作为一种同步工具好用吗?其实真不好用.我梦想的工具一定是可以帮我自动完成merge过程的,永远不用开分支,永远不用告诉我链表头在哪里,以及怎么reset, 什么时候rebase, 什么时候打tag. 一个工具

SVN迁移到Git的过程(+ 一些技巧)

SVN迁移到Git的过程(+ 一些技巧) 李顺利 Key Words SVN,Git,Clone,Conversion,Tips,VCS,Pro Git 关于在VCS中SVN和Git之间的迁移(Clone)这个部分网上已经有大批的文章介绍,而且都非常不错,能够满足我们的常见的需求,这里介绍的是我自己整理的一些技巧和使用中出现的一些问题和疑问. 阅读本篇文章,请先有一些Git和SVN的使用经验(又是经验,经验到底是什么?我都不知道). 第一部分   今天的实验对象是,把 http://code.g

SVN迁移到Git的过程(+ 一些技巧

关于在VCS中SVN和Git之间的迁移(Clone)这个部分网上已经有大批的文章介绍,而且都非常不错,能够满足我们的常见的需求,这里介绍的是我自己整理的一些技巧和使用中出现的一些问题和疑问.阅读本篇文章,请先有一些Git和SVN的使用经验(又是经验,经验到底是什么?我都不知道).  第一部分 今天的实验对象是,把http://code.google.com/p/jdbcdslog-exp/ 这个使用SVN管理的project迁移到Git上面,Git托管网站选择github.SVN迁移到Git,当

将代码库从 SVN 迁移至 Git 并保留所有 commit 记录

公司内部原本使用 SVN 进行版本控制,但随着 Github 的流行我个人的代码管理习惯逐渐转变.虽然公司项目并非开源,SVN 所具有的标准 trunk / branches / tags 结构完全够用,使用 Git 仍然有如下优势: 类似 GitHub 的 GitLab 免费管理工具.将代码托管在自己内部服务器上的同时,提供了优美的 web 界面,图形化分支结构,更直观的代码审查,统计.issue 系统.wiki 等功能全面集成. 更方便主程做 code review,控制代码质量.创建主仓库

svn迁移至git

svn 版本库的迁移,只要svn 库为标准目录(trunk.branches.tags)按照git官方文档基本都可以完成. 这里说说我所迁移的非标准目录结构的svn 库 svn 库里有part1目录,part1目录下又分为:code.UI等等,对于这种非标准目录结构,主干就是part1,没有分支,没有标签. 而code下面又分为android.ios目录,目录内才分trunk.tags.branch,这种目录层级结构-- 对于以上非标准目录结构,我采用的是先git svn到本地,并提交到git仓

MacOS下SVN迁移Git踩坑记

1. First Blood 之前在Windows环境下进行svn到git的迁移是很简单的,参考官方文档. 可是在macOS环境下(macOS High Sierra 10.13.2),输入: $ git svn 神奇的事情发生了,报了以下错误: can't locate SVN/Core.pm in @INC (you may need to install the SVN::Core module) (@INC contains: /usr/local/git/lib/perl5/site_

SVN迁移Gitlab步骤

概述 公司要求将之前使用SVN进行管理的项目迁移到Gitlab进行项目管理,但是运维连不上我们这边的SVN服务器,于是我们就得自己将SVN项目迁移到Gitlab.Yeah!终于有我表现的机会了. 要求保留SVN上的提交记录 总体的执行步骤如下: 账号对应 git-svn拉取原来SVN项目 提交项目到Gitlab上 执行步骤 接下来我们就要进行转换了. 账号对应 SVN使用的是用户账号展示的提交记录,但是git使用的是账号和邮箱进行人员确认的,因此我们需要使用将二者进行对应. 新建个txt文本文档

SVN 迁移

前段时间公司的SVN服务器做升级,需要做SVN迁移,百度谷歌了解了大概,(感谢老板放心啊,还好没什么问题,都迁移成功了),之前用的是1.6,我看了下官网有1.8,征得同意后就直接升级加迁移一起做了了.下面是迁移的大概步骤 1. 源服务器: 1) 停掉SVN service 2) 运行dump 命令,制作待迁版本库的dump 文件 由于当前版本库中文件版本较多,一万两千多个,试过一次性制作dump文件,但是会出错, 所以改成分段制作 (这里用了一个脚本) echo %date% %time% St

Svn Replacement For Git Stash

svn 实现git stash类似的功能 % svn diff > WorkInProgress.txt % svn revert -R . <make changes> % svn commit -m "Patched to support server schema change" % patch -p0 -i WorkInProgress.txt % rm WorkInProgress.txt Svn Replacement For Git Stash,布布扣,