Git学习文档之二 应用总结-svn迁移到git
##svn迁移到git
在 Subversion,每个提交者在都在主机上有一个用户名,记录在提交信息中。如果想让这条信息更好的映射到 Git 作者数据里,则需要 从 Subversion 用户名到 Git 作者的一个映射关系。建立一个叫做 user.txt 的文件,用如下格式表示映射关系:
schacon = Scott Chacon <schacon@geemail.com>
selse = Someo Nelse <selse@geemail.com>
通过该命令可以获得 SVN 作者的列表:
$ svn log --xml | grep -P "^<author" | sort -u | \
perl -pe 's/<author>(.*?)<\/author>/$1 = /' > users.txt
它将输出 XML 格式的日志——你可以找到作者,建立一个单独的列表,然后从 XML 中抽取出需要的信息。(显而易见,本方法要求主机上安装了grep,sort 和 perl.)然后把输出重定向到 user.txt 文件,然后就可以在每一项的后面添加相应的 Git 用户数据。
为 git svn 提供该文件可以然它更精确的映射作者数据。你还可以在 clone 或者 init后面添加 --no-metadata 来阻止 git svn 包含那些 Subversion 的附加信息。这样 import 命令就变成了:
$ git-svn clone http://my-project.googlecode.com/svn/ \
--authors-file=users.txt --no-metadata -s my_project
导入之后,你还需要一点 post-import(导入后) 清理工作。最起码的,应该清理一下 git svn 创建的那些怪异的索引结构。首先要移动标签,把它们从奇怪的远程分支变成实际的标签,然后把剩下的分支移动到本地。
要把标签变成合适的 Git 标签,运行
$ cp -Rf .git/refs/remotes/tags/* .git/refs/tags/
$ rm -Rf .git/refs/remotes/tags
该命令将原本以 tag/ 开头的远程分支的索引变成真正的(轻巧的)标签。
接下来,把 refs/remotes 下面剩下的索引变成本地分支:
$ cp -Rf .git/refs/remotes/* .git/refs/heads/
$ rm -Rf .git/refs/remotes
现在所有的旧分支都变成真正的 Git 分支,所有的旧标签也变成真正的 Git 标签。最后一项工作就是把新建的 Git 服务器添加为远程服务器并且向它推送。下面是新增远程服务器的例子:
$ git remote add origin git@my-git-server:myrepository.git
为了让所有的分支和标签都得到上传,我们使用这条命令:
$ git push origin --all
所有的分支和标签现在都应该整齐干净的躺在新的 Git 服务器里了。
Git学习文档之二 应用总结-svn迁移到git相关推荐
- Git学习文档之一 学习文档-并行开发
##并行开发 ###集成管理员工作流 由于 Git 允许使用多个远程仓库,开发者便可以建立自己的公共仓库,往里面写数据并共享给他人,而同时又可以从别人的仓库中提取他们的更新过来.这种情形通常都会有个代 ...
- Git学习文档之一 学习文档-上传下载
##上传下载 ###如何上传(推送数据到远程仓库) 项目进行到一个阶段,要同别人分享目前的成果,可以将本地仓库中的数据推送到远程仓库.实现这个任务的命令很简单: git push [remote-na ...
- Log4j配置学习文档之二 处理日滚文件-实现原理
#实现原理 ##处理系统自己log4j定义的日滚日志文件 在系统中使用log4j中的RollingFileAppender和DailyRollingFileAppender可以实现日志文件的滚动,这里 ...
- Git学习文档之一 学习文档-合并分支
##合并分支 ###新建分支 执行下面命令新建并切换到分支: $ git checkout -b dev 该命令相当于执行了下面的两条命令: $ git branch dev $ git checko ...
- Git学习文档之一 学习文档-发布
##发布 ###如何发布 发布实际上就是给commit打标签,人们在发布某个软件版本(比如 v1.0 等等)的时候,经常这么做 ###列出现有标签 运行下面命令显示现有的标签: $ git tag # ...
- Git学习文档之一 学习文档-原理
原理 文件的三种状态 对于任何一个文件,在 Git 内都只有三种状态:已提交(committed),已修改(modified)和已暂存(staged).已提交表示该文件已经被安全地保存在本地数据库中了 ...
- nginx学习文档之二 配置负载均衡-负载均衡发现的问题
#负载均衡发现的问题 用了nginx负载均衡后,在两台tomcat正常运行的情况下,访问http://localhost 速度非常迅速,通过测试程序也可以看出是得到的负载均衡的效果,但是我们试验性的把 ...
- nginx学习文档之二 配置负载均衡-linux配置负载均衡
#linux配置负载均衡 linux下配置tomcat负载均衡和windows下是一样的 安装完nginx后直接修改conf下的nginx.conf文件即可 配置文件如下: #user nobody; ...
- nginx学习文档之二 配置负载均衡-windows配置负载均衡
#windows配置负载均衡 nginx+tomcat负载均衡的意思大概如下图: 所有请求先经过nginx服务器,然后由nginx服务器进行转发,将请求根据配置需要分发给指定的tomcat服务器 ## ...
最新文章
- pycharm配置远程调试docker
- Java集合:Integer.parseInt() String.substring()
- 在线安装非GPU版的tensorflow流程
- jQuery 实现菜单
- indesign教程,如何转换图形和框架?
- 【推荐】一个移动开发的网站
- 怎样在计算机上安装计算器,如何在win10系统电脑上重新安装计算器
- 精确波段 抄底逃顶指标 通达信/东方财富 副图 源码
- GetFlashInfo V7.5_u盘芯片检测工具
- java分发_【Java】用注解实现分发器
- Unity中Vive Controller手柄模型渲染流程和模型替换
- dbus-glib编程2:d-feet的使用
- 苹果手机黑屏怎么办,苹果手机不能开机怎么办
- 二极管选型-二极管参数介绍
- STM32MP157C-DK2->Develop on Arm® Cortex®-A7之 C语言开发uart例程
- Spring_7_AOP之Advice应用
- CentOS增加虚拟内存
- 格式化数据#2:图灵奖(A.M. Turing Award)
- CSS flex-direction用法解释
- 项目6 创建与使用存储过程
热门文章
- 数值计算方法(二)——复化求积公式
- Oracle01877,Cognos错误:RQP-DEF-0177 执行操作“sqlOpenResult”(状态为“-28”)时出错...
- mysql多个外键删除设置_Mysql在删除集上使用多个外键创建表
- python爬虫实现方式_python爬虫的实现方法
- 【LeetCode】剑指 Offer 36. 二叉搜索树与双向链表
- 《深入理解 Spring Cloud 与微服务构建》第十六章 Spring Boot Security 详解
- Spring面试之bean作用域
- C++手写快读详解(快速读入数字)
- UI自动化测试POM设计之-maven工程
- salt 文件push使用方法