从SVN迁移到Git(包括SVN历史纪录)【最系统的讲解】

从SVN迁移到git有很多方法,最简单的就是使用git包自带的git svn命令(git v1.7及以上)。除此之外还有一些第三方的专门的转换工具如http://www.subgit.com/,https://www.atlassian.com/git/tutorials/migrating-overview/等。但是由于是第三方工具,感觉能不用就不用。


使用git svn命令最经典的就是

$git svn clone --stdlayout --no-metadata -A users.txt svn://hostname/path dest_dir


其中:

--stdlayout就是说你使用的是标准的"trunk/, branches/, tags/" 等标记;

 --no-metadata命令是为了不要svn的额外的commit信息(UUID),一般也不需要,所以都带这个参数;

users.txt是把SVN的用户转成git用户的文件,这个文件可以用SVN的命令生成(如果用户很少自己写也可以),文件的形式如下:

svn_user1 = git_user1 < git_user1_mail@xxx.com>
svn_user2 = git_user2 < git_user2_mail@xxx.com>

每行一个user,等号左边是SVN的用户(区分大小写),等号右边就是git的用户,git的用户必须存在用户名和邮箱。如果用户比较多,可以使用下命令创建:

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

然后编辑user.txt为上面的格式。


后面的url就是你的SVN checkout的url,支持的协议有SVN://,http://,https://,(如果你是做的本地服务器用的file:///形式的,有时候是不行的)

dest_dir就是目标git目录了。


这个命令一般都是没问题的。但是就如上面所说,如果SVN是本地服务器有时候就不行了,要么报错,要么只生成一个空的git容器。

其实这个命令是一个合成版本,可以使用它的拆分版,即:

$mkdir dest_dir && cd dest_dir
$git svn init file:///xxxxx/xxxx/xxxx --no-metadata
$git config svn.authorsfile ../users.txt
$git svn fetch
参数和git svn clone是一样的,其实就是git svn的分解版。


如果你的SVN没有其他的branch,到这里就完了。如果有其他的branch,还需要手动创建git的branch迁移。


然后就可以把刚才的git push到远程服务器,当然,只在本地用也是可以commit的,不影响使用。(这是git和svn的一个很大的区别)


参考资料:http://stackoverflow.com/questions/79165/how-to-migrate-svn-repository-with-history-to-a-new-git-repository

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353175.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

反射的应用

class Teacher:OPERATE_DIC [(创建课程, create_course),(创造学生, create_student),(创建课程, create_course),(查看学生信息, check_student_info),]def __init__(self, name):self.name namedef create_course(self):print(创建课程)def create_student(self):print(创建…

抖音数据统计_26万条抖音数据背后的推荐逻辑以及严重失调的男女比例

本文作者&#xff1a;喜哥&#xff08;张佳&#xff09;易灵微课《数据分析-认知与实践》讲师新榜数据分析师人人都是产品经理、华尔街见闻专栏作家简书科技类优秀作者本文首发自公众号喜新&#xff08;noyanjiu&#xff09;,如需转载请注明出处这次是26W条数据&#xff0c;应该…

SQL SERVER 数据库主键和外键的思考

SQL SERVER 数据库主键和外键的思考 什么是主键&#xff1a; 主键是指表中一个列或者列的组合&#xff0c;其值能够唯一的标识表中的每一个行。这样的一列或者多列成为表的主键&#xff0c;通过它可以强制表的实体完整性。当创建或者更改表时可以通过定义PRIMARY KEY约束来创建…

在Gradle 2.13中更好地处理“在插件Y上找不到属性X”

您可能从未听说过的服务缺少用户名&#xff0c;密码或令牌&#xff1f; 这通常发生在您尝试执行任何操作&#xff08;例如仅构建项目&#xff09;时&#xff0c;不仅发生在使用给定的插件&#xff08;例如在线代码覆盖工具&#xff09;时。 我不想修改我的环境&#xff0c;而只…

2018/7/31 -zznu-oj -问题 C: 磨刀- 【扩展欧几里得算法的基本应用】

问题 C: 磨刀 时间限制: 1 Sec 内存限制: 128 MB提交: 190 解决: 39[提交] [状态] [讨论版] [命题人:admin]题目描述 磨刀是一个讲究的工作&#xff0c;只能在n℃下进行&#xff0c;所以我们首先要做的就是把刀的表面温度提升到n℃。处理刀身温度有两种方式&#xff1a;1.淬火…

统计各个函数的耗时_分享一次CMS GC耗时狠高优化过程全记录

1. 背景多个业务线的应用出现LongGC告警最近一段时间&#xff0c;经常收到CAT报出来的Long GC告警(配置为大于3秒的为Longgc)。2. 知识回顾2.1 JVM堆内存划分新生代(Young Generation)新生代内被划分为三个区&#xff1a;Eden&#xff0c;from survivor&#xff0c;to survivor…

用JDBC直连方式访问SQL Server 2005详解

用JDBC直连方式访问SQL Server 2005详解 1.安装JDK&#xff0c;配置其环境变量&#xff1a;(笔者所用版本为1.6版) &#xff08;1&#xff09;从官方网http://java.sun.com/jdk下载安装文件。 &#xff08;2&#xff09;安装下载下来的安装包&#xff0c;按照提示安装成…

string类有可以调换方向的函数吗_深度剖析C++中的inline函数

点蓝色字关注“CurryCoder”微信公众号&#xff1a;CurryCoder的程序人生 怕什么真理无穷&#xff0c;进一寸有一寸的欢喜1.inline函数的爱恨两难内联函数比宏优点好很多&#xff0c;详细原因请参见尽量以const、enum、inline替换#define 。调用内联函数不需要承受函数调用所导…

javafx基础教程_JavaFX教程–基础

javafx基础教程JavaFX似乎正在RIA领域获得发展。 有了正确的工具和开发支持&#xff0c;它肯定会成为下一个最佳技术“物”的代价。 我没有在这里写任何JavaFX评论&#xff0c;因为有很多技术评论可能对它进行了广泛的评论&#xff0c;但是&#xff0c;我将编写一个简单的教程&…

prepareStatement与Statement的区别

prepareStatement与Statement的区别 1:创建时的区别&#xff1a; Statement stmcon.createStatement(); PreparedStatement pstmcon.prepareStatement(sql); 执行的时候: stm.execute(sql); pstm.execute(); 2: pstm一旦绑定了SQL,此pstm就不能执行其他的S…

什么是Spring Boot以及为什么它是用于创建微服务的首选框架

为什么要使用Spring Boot创建微服务&#xff1f; Spring Boot是Java领域众所周知的首选框架&#xff0c;用于创建Micro Services。 使用Spring引导框架&#xff0c;可以非常轻松地创建Java应用程序。 现在&#xff0c;我们将看到Spring启动框架的一些功能&#xff0c;这使其成为…

嵌入式开发有年龄限制吗_什么?!考教资有年龄限制了?2020年我还能考吗?...

近几年教师资格证越来越火爆越来越多的人都想报考&#xff0c;却又担心年龄问题&#xff0c;那么考教师资格证有年龄限制吗&#xff1f;下面小编就给大家解答一下这个问题&#xff1a;报考教师资格证是没有年龄限制的&#xff0c;只有学历限制。报考幼师教师资格证的考生必须是…

Python3的bytes/str之别

Python 3最重要的新特性大概要算是对文本和二进制数据作了更为清晰的区分。文本总是Unicode&#xff0c;由str类型表示&#xff0c;二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes&#xff0c;正是这使得两者的区分特别清晰。你不能拼接字符串和字节…

jframe透明_使JFrame透明

jframe透明首先创建一个带有滑块的框架&#xff0c;该滑块将用于设置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaul…

MyEclipse下Tomcat启动变慢的解决方法

项目忽然使用debug启动有时候会突然变得非常慢。不但启动慢&#xff0c;启动之后连打开项目标页面也很慢&#xff0c;是日常平凡的4&#xff0c;5倍。可以有下面的几种解决方法&#xff1a; 1、由于Tomcat是服务器,部署好的工程就会一直驻留到服务器里,每次启动都会把部署到服务…

Python关于Threading暂停恢复解决办法

我们都知道python中可以是threading模块实现多线程, 但是模块并没有提供暂停, 恢复和停止线程的方法, 一旦线程对象调用start方法后, 只能等到对应的方法函数运行完毕. 也就是说一旦start后, 线程就属于失控状态. 不过, 我们可以自己实现这些. 一般的方法就是循环地判断一个标志…

stm32l4 外部中断按键会卡死_STM32学习之路-按键中断测试(外部中断)

void RCC_Config(void){SystemInit(); //系统时钟初始化RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD| RCC_APB2Periph_GPIOE | RCC_APB2Periph_G…

NetBeans Java EE技巧9:从数据库创建JSF应用程序

您需要非常快速地创建数据库前端吗&#xff1f; NetBeans IDE允许人们以极少的编码就非常快速地为一组数据库表开发JSF应用程序前端。 现在&#xff0c;本教程既是老歌&#xff0c;又是老歌……对于那些不了解它的人来说&#xff0c;值得再次提及。 首先&#xff0c;创建您的应…

[模板]树链剖分

用途 我想把一个本来是线性的东西放到树上做&#xff0c;维护路径或者是子树的各种性质&#xff0c;那就用树剖呗 它可以套线段树、树状数组、ST表&#xff08;以及其他我不知道的&#xff09; 做法 我们考虑把树分成一条条链&#xff0c;然后对每条链维护我们的数据结构&#…