`
fantaxy025025
  • 浏览: 1247160 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类

svn仓库迁移到git仓库

 
阅读更多

迁移记录,根据实际操作,有改动和改进地方。

 

==========================================================================

(备注:收费的)

SubGit 2.0版本,开始支持远程subversion版本库,因此创建Git镜像,无需shell访问subversion版本库了。
项目地址:
http://subgit.com/index.html

 

==========================================================================

如何将远程SVN版本库搬到本地 
From:http://nowing.iteye.com/blog/844608
经常在宽带网络状况不佳的时候,访问互联网上的SVN库是一件极其痛苦的事情,更别说要查看版本库的日志信息了。此时如果可以将远程版本库整个同步到本地,然后所有操作都在本地的版本库上进行,好处就不用多说了。幸运的是SVN已经提供了相应的功能,具体操作步骤如下: 
1)在本地建立一个新的版本库: 
    svnadmin create D:\test 
2)创建钩子文件pre-revprop-change.bat:(windows环境里是D:\test\hooks\pre-revprop-change.bat) 
    文件中只需要一行内容即可“exit 0”。 
3)初始化同步操作: 
    svnsync init file:///D:/test <远程SVN库的URL> 
    (如果需要用户名/密码,则按提示输入。成功后命令行将输出信息:复制版本 0 的属性) 
4)执行同步操作: 
    svnsync sync file:///D:/test 
   (如果需要用户名/密码,则按提示输入。如果远程SVN库数据较多,需要慢慢等待) 
5)如果远程SVN库有了新的更新,只需重复执行步骤4即可。 


-------------- 

如何将SVN仓库转换为Git仓库 

按如下步骤操作就可以将SVN仓库完整的转换为Git仓库: 
1) 将远程SVN仓库搬到本地(这一步主要是为了提高转换的速度,也可以忽略) 
   这里假设最终要转换的SVN仓库为file:///tmp/test-svn 

2) 使用git svn clone命令开始转换 
    $ git svn clone file:///tmp/test-svn -T trunk -b branches -t tags 
    git svn clone 命令会把整个Subversion仓库导入到一个本地的Git仓库中。这相当于针对所提供的 URL 运行了两条命令git svn init加上gitsvn fetch。因Git需要提取每一个版本,每次一个,再逐个提交。对于一个包含成百上千次提交的项目,花掉的时间则可能是几小时甚至数天(如果你的SVN仓库是远程网络访问的,先执行上面第一步的操作还是有点好处的。不过项目通常提交次数都不少,漫长的等待是少不了的啦,慢慢等吧)。 
-T trunk -b branches -t tags告诉Git该Subversion仓库遵循了基本的分支和标签命名法则。如果你的主干(trunk,相当于Git里的master分支,代表开发的主线)、分支或者标签以不同的方式命名,则应做出相应改变。由于该法则的常见性,可以使用-s来代替整条命令,它意味着标准布局(s是Standard layout的首字母),也就是前面选项的内容。下面的命令有相同的效果: 
  $ git svn clone file:///tmp/test-svn -s 
注意本例中通过 git svn 导入的远程引用,Subversion的标签是当作远程分支添加的,而不是真正的Git标签。导入的Subversion仓库仿佛是有一个带有不同分支的tags远程服务器。用“$ git show-ref”就可以看到转换后Git仓库的相关情况,结果类似如下: 
$ git show-ref 
1cbd4904d9982f386d87f88fce1c24ad7c0f0471 refs/heads/master 
aee1ecc26318164f355a883f5d99cff0c852d3c4 refs/remotes/my-calc-branch 
03d09b0e2aad427e34a6d50ff147128e76c0e0f5 refs/remotes/tags/2.0.2 
50d02cc0adc9da4319eeba0900430ba219b9c376 refs/remotes/tags/release-2.0.1 
4caaa711a50c77879a91b8b90380060f672745cb refs/remotes/tags/release-2.0.2 
1c4cb508144c513ff1214c3488abe66dcb92916f refs/remotes/tags/release-2.0.2rc1 
1cbd4904d9982f386d87f88fce1c24ad7c0f0471 refs/remotes/trunk 
而普通的 Git 仓库是类似如下模样: 
$ git show-ref 
83e38c7a0af325a9722f2fdc56b10188806d83a1 refs/heads/master 
3e15e38c198baac84223acfc6224bb8b99ff2281 refs/remotes/gitserver/master 
0a30dd3b0c795b80212ae723640d4e5d48cabdff refs/remotes/origin/master 
25812380387fdd55f916652be4881c6f11600d6f refs/remotes/origin/testing 
这里有两个远程服务器:一个名为gitserver,具有一个master分支;另一个叫origin,具有master和testing两个分支。 

3) 获取SVN服务器的最新更新到转换后的Git仓库(这步通常在连续的转换过程中就没必要了) 
    $ git svn rebase 

4) 转换SVN仓库的svn:ignore属性到Git仓库的.gitignore文件 
    $ git svn create-ignore 
    该命令自动建立对应的.gitignore文件,以便下次提交的时候可以包含它。如果在生成.gitignore文件前想先查看一下,运行命令“git svn show-ignore”即可。 

5) 转换SVN的标签为Git标签 
    $ cp -Rf .git/refs/remotes/tags/* .git/refs/tags/ 
    $ rm -Rf .git/refs/remotes/tags 
    该命令将原本以 tag/ 开头的远程分支的索引变成真正的(轻巧的)标签。 
    这个在Window下试过不行,报”cp: cannot stat `.git/refs/remotes/tags/*': No such file or directory“的错误,可以使用如下两个标准命令处理: 
$ git tag tagname tags/tagname     ----用指定的分支创建一个Git标签 
$ git branch -r -d tags/tagname    ----删除指定的远程分支 

6) 转换SVN的分支为Git分支 
    $ cp -Rf .git/refs/remotes/* .git/refs/heads/ 
    $ rm -Rf .git/refs/remotes 
    该命令把refs/remotes下面剩下的索引变成Git本地分支 

7) 最后把转换后的本地Git仓库推到公共的Git服务器 
    $ git remote add origin [远程Git服务器地址] 
    $ git push origin master --tags 
    所有的标签和主干现在都应该整齐干净的躺在新的Git服务器里了。如果要将分支也同步到远程Git服务器,将--tags改为--all。

==========================================================================

 

+

+

+

=

+

+

+

 

分享到:
评论

相关推荐

    Git Community Book(中文版)

    从其他代码管理工具迁移到Git 图形化的Git Git仓库托管 Git的其它用法 Git的脚本支持 Git 与编辑器 7. 原理解析 Git是如何存储对象的 查看Git对象 Git引用 Git索引 打包文件 更底层的Git 传输协议 术语表

    progit(git中文文档)

    *第九章*对比 Git 和其它 VCSs,包括在 Subversion(SVN)的世界使用 Git 以及从其它 VCSs 迁移到 Git。很多 组织 仍在使用 SVN,并且也没有计划改变,此时,你将了解到 Git 不可思议的能力——本章将展示,在你不得不 ...

    dvn-sourceforge2github:DVN代码从SourceForge上的svn迁移到GitHub上的git-git source code

    此仓库将捕获迁移过程。 完成后,我们将更新 此包含DVN开发人员过渡到GitHub的指南来源: : 安装RVM和svn2git 另请参阅 murphy:~ pdurbin$ \curl -L https://get.rvm.io | bash -s stable --ruby % Total % ...

    AzureDevOpsToGitHubRepoMigrator:将Git Repo从Azure DevOps迁移到GitHub的实用程序(包括历史记录,分支和标签)

    将Git Repo从Azure DevOps迁移到GitHub的实用程序。 这将迁移所有你在你的资料库,包括所有分支,所有的标签和提交的完整历史。 视频 如果要查看有关如何从Azure DevOps Repos迁移到GitHub的深入说明,请在YouTube...

    基于Java的文件管理系统.zip

    主要应用场景:文件管理系统、协同办公系统、电子书、知识管理系统、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库。 Java文件管理系统,支持权限管理、历史版本管理、Office编辑、Office预览、...

    基于JAVA的Web的文件管理系统项目

    文件管理系统、文档安全管理系统、分布式文档管理系统、协同办公系统、电子书、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库、FTP客户端、SFTP客户端、SMB客户端、Linux系统远程文件访问。

    基于Web的文件管理系统,支持Office、WPS预览/编辑、在线解压缩、文件分享、文件加密、远程存储、远程文件推送、秒传、断点

    MxsDoc是基于Web的文件管理系统,支持权限管理、历史版本管理、Office预览/... 主要应用场景:文件管理系统、协同办公系统、电子书、知识管理系统、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库。

    DocSys-master.zip

    MxsDoc是基于Web的文件管理系统,支持权限管理、历史版本管理... 主要应用场景:文件管理系统、协同办公系统、电子书、知识管理系统、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库。GPL 2.0开源协议.

    基于Web的文件管理系统(项目源码)

    主要应用场景:文件管理系统、文档安全管理系统、分布式文档管理系统、协同办公系统、电子书、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库、FTP客户端、SFTP客户端、SMB客户端、Linux系统远程...

    DocSys-DocSys_V2.02.18.zip(MxsDoc 源码)

    主要应用场景:文件管理系统、文档安全管理系统、分布式文档管理系统、协同办公系统、电子书、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库、FTP客户端、SFTP客户端、SMB客户端、Linux系统远程...

    docsys-linux-2.02.18.tar.gz (MxsDoc 专业版 / 企业版)

    主要应用场景:文件管理系统、文档安全管理系统、分布式文档管理系统、协同办公系统、电子书、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库、FTP客户端、SFTP客户端、SMB客户端、Linux系统远程...

    docsys-win-Personal-2.02.18.zip(MxsDoc 个人版)

    主要应用场景:文件管理系统、文档安全管理系统、分布式文档管理系统、协同办公系统、电子书、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库、FTP客户端、SFTP客户端、SMB客户端、Linux系统远程...

    docsys-win-Community-2.02.18.zip(MxsDoc 开源版)

    主要应用场景:文件管理系统、文档安全管理系统、分布式文档管理系统、协同办公系统、电子书、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库、FTP客户端、SFTP客户端、SMB客户端、Linux系统远程...

    docsys-win-2.02.18.zip(MxsDoc 专业版 / 企业版)

    主要应用场景:文件管理系统、文档安全管理系统、分布式文档管理系统、协同办公系统、电子书、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库、FTP客户端、SFTP客户端、SMB客户端、Linux系统远程...

    MxsDoc是基于Web的文件管理系统,全平台支持:Linux,Windows,Mac

    主要应用场景:文件管理系统、文档安全管理系统、分布式文档管理系统、协同办公系统、电子书、软件接口管理系统、自动备份软件、网页版SVN仓库、网页版GIT仓库、FTP客户端、SFTP客户端、SMB客户端、Linux系统远程...

    GIT中文资源

    2.1 取得项目的 Git 仓库 . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.1 从当前目录初始化 . . . . . . . . . . . . . . . . . . . . . . 13 2.1.2 从现有仓库克隆 . . . . . . . . . . . . . . . . . ...

    Mxsdoc_Setup_V2.02.35.exe(MxsDoc 专业版 / 企业版)

    采用目前最流行的SVN和GIT版本仓库 5. 在线编辑 支持各种文本文件在线编辑,支持Office文件协同编辑,无任何外部依赖(无需安装和部署其他Office编辑软件或系统) 6. 文件分享 支持文件和目录分享,支持访问权限...

    docsys-win-2.02.28.zip(MxsDoc 专业版 / 企业版)

    采用目前最流行的SVN和GIT版本仓库 5. 在线编辑 支持各种文本文件在线编辑,支持Office文件协同编辑,无任何外部依赖(无需安装和部署其他Office编辑软件或系统) 6. 文件分享 支持文件和目录分享,支持访问权限...

    docsys-win-2.02.27.zip(MxsDoc 专业版 / 企业版)

    采用目前最流行的SVN和GIT版本仓库 5. 在线编辑 支持各种文本文件在线编辑,支持Office文件协同编辑,无任何外部依赖(无需安装和部署其他Office编辑软件或系统) 6. 文件分享 支持文件和目录分享,支持访问权限...

Global site tag (gtag.js) - Google Analytics