当我发现我很感兴趣的项目都被其作者托管在Github的时候,让我萌生了对Git的好奇。虽然我已是如此的奥特曼,但是还是有必要写出来分享给其他还未接触 Git 的人的。之前我有介绍过《在Google Code上用 Mercurial 取代 Subversion 管理你的项目》,其实就是教大家如何把 SVN 转换到 Mercurial 且保留全部的历史记录。本文讲的则是另外一则,是教大家如何转换 SVN 到 Git,网上其实有不少的教程,但是都没有从 SVN 的 tags 到 Git 的 tags,本文提供了另外一则转换的指南,如果有不妥的地方,望请 Git 高手指教并指正。
1.安装 Git
首先,你需要安装带有 git-svn 的 Git(git-svn 可以让你 SVN 和 Git并用,如果你打算使用 Git 又不想转变你的 SVN版本库,这会是一种很好的解决方案,不过本文只是利用git-svn来一次性转换你的 SVN版本库 为 Git。)
你可以在这里下载安装Git:http://git-scm.com/download。最新版似乎都有集成git-svn,至少我安装完以上地址提供的编译好的版本,在 Terminal 里输入 git svn会有提示”Not a git repository”。
如果你正在使用MAC OS X,你应该已经用过 MacPorts了吧,那么:
Ubuntu 或者 Debian Linux用户:
2.创建作者文件
下一步,创建一个文本文件来映射 Subversion 的提交者到 Git 的作者使历史记录里的名字和email地址正确显示。保存成authors.txt:
3.克隆(clone)版本库
现在来运行命令导入你的svn版本库为一个本地的Git版本库。
我假定你的 svn 版本库有标准的 /trunk,/tags 以及/branches。
比如以我的google code上的svn为例:
现在,你可以运行 git log 命令,你将会看到你全部的提交历史记录以及正确显示的提交者作者名。
4.转换branches 为 tags
现在还需要做一步处理。目前你全部的 tags 在 Git 的版本库里都成了 branches(分支),并不是 tags。所以你需要手动转换它们。对于每一个 svn 的 tag你都将转换为 Git 的 tag,然后删除全部的 branch。用以下的命令列出:
然后列出所有的tag:
现在,你就有了一个本地的 Git 版本库了,包含了所有的历史记录以及 tags。
5.Push(推送)到一个公共的版本库
当然如果你并不想在网上分享你的 Git 版本库,这一步的操作你大可不必了。
以 github 为例:
Well Done!一切搞定了。开始你的 Git 之旅吧。
最后,附送一个为 SVN用户过渡到Git的使用手册。
作者:Leeiio
原文链接:转换你的 Subversion 到 Git