日前进行了SVN迁移到git的操作,历时两天,保留了原有commit记录,现将过程记录如下,以供朋友们参考。
1,复制出SVN仓库文件
仓库文件的结构如上图所示。
2,搭建本地仓库, 因为本人SVN服务器上的www服务器是ningx,无法再安装apache,所以将仓库复制下来,再本地虚拟机上安装了apache服务器, 1),安装apache服务器
2),安装subversion服务, 使用apt-get install subversion命令直接安装服务,安装完之后找到下边两个文件,
``
mod_dav_svn.so
mod_authz_svn.so
`` 将上边两个文件放入apache的modules问件内
3),配置SVN的http访问,
<Location /svn>
DAV svn
SVNPath /www/repos
AuthType Basic
AuthName "Authorization SVN"
AuthUserFile /www/server/apache/bin/passwd
AuthzSVNAccessFile /www/repos/conf/authz
Satisfy all
Require valid-user
</Location>
apache的配置文件引入这两个so文件
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
如上图所示
我使用了域名www.svn.net svn的http访问地址就是 http://www.svn.net/svn/
4),/www/server/apache/bin/passwd文件的生成 使用过的是apache的命令,具体命令如下: /www/server/apache/bin/htpasswd -cb filename username password 我的命令是 ./htpasswd -cb password admin 123456 随后在/www/server/apache/bin/目录下就会生成一个password文件, 3,准备svnuser.txt文件, 此文件是保留svn的commit记录的必备文件,因此,所有的人都要有对应的关系,包括离职的,
zhouchao= zhouchao <zhouchao@qq.com>
jialuqi= jialuqi <jialuqi@qq.com>
test = test <test@qq.com>
示例:svnname =gitname <gitemail.com>
内容如下图所示
4,利用git客户端拉取svn。 我使用的是windows的git客户端,安装完之后,右键里多了两个选项,如下图
在任意位置新建一个空文件夹,然后进入右键 点击第二个git bash here,进入黑屏窗口,如下所示:
拉取命令如下:
git svn clone http://www.svn.net/svn/ --no-metadata --authors-file=svnuser.txt --trunk=wenyifan wenyifan
git svn clone http://www.svn.net/svn/ -r 5170:6000 --no-metadata --authors-file=svnuser.txt --trunk=hn 5170
示例:git svn clone http://www.svn.net/svn/ --no-metadata --authors-file=svnuser.txt --trunk=svn仓库名字 本地生成文件夹名字
根据svn记录多少,拉取时间从几分钟到几小时不等,拉取过程如图所示:
5,拉取完成之后, 1),进入到本地生成的文件夹内,右键->git gui here, 如下图,
会出现一个自动提示,点击确定就行了, 2),remote-->Add;
分别填入远程地址,别名,确定就行了,远程地址的项目一定要是空的才行,不要有任何文件,千万不要初始化仓库,否则报错,就要强制覆盖掉远程了。
3),remote-->Push;
红框内的选项可选可不选,如果报错的话可以选中,强制覆盖掉远程的项目。