这篇文章讲了两个内容
- SVN仓库的转移(linux->windows)
- SVN转移至Github
SVN仓库的转移
- 原SVN服务器端(linux)执行dump命令进行备份
#svnadmin dump /{path}/{project_name} > {dump_name}
svnadmin dump /home/svn/manage > manage_back
- 会得到一个manage_back的一个文件, 拷贝至新SVN服务端的机器(windows)上
- 在新SVN服务端(windows)创建新的仓库, 并写入.
#svnadmin create /{path}/{project_name}
svnadmin create E:/Repositories/manage
svnadmin load E:/Repositories/manage < manage_back
- 由于只拷贝了仓库信息, 会丢失其他配置文件(用户密码之类的), 可以直接拷贝原服务器端的conf. 我这里是重新设置用户密码的, 没有设置用户就checkout会提示权限问题.
SVN转移至Github
- 获得当前仓库的用户信息, 这里使用的是svn-migration-scripts.jar将信息写入到auth.txt中
java -jar svn-migration-scripts.jar authors https://127.0.0.1:8443/svn/manage > auth.txt
auth.txt
cn = cn <[email protected]>
test = test <[email protected]>
-
修改auth.txt, 格式
svn用户名 = github用户名 <github邮箱>
, 只需修改有github账号的即可, 也就是我只修改第一行就行了, test那行可以不动. -
拉取数据, 这里使用的是标准的SVN格式布局, 所以用
--stdlayout
, 如果SVN仓库是非标准的目录布局,那就需要分别显示指定参数--trunk={path}
,--branches={path}
,--tags={path}
, 有就加, 没有就不加
git svn clone --stdlayout --authors-file=auth.txt https://127.0.0.1:8443/svn/manage manage
- 拉取之后, 进入{prpject_name}显示三个文件
git svn fetch
进行合并下 - github创建新的仓库, 准备上传至github
- 在{project_name}文件夹内添加remote_url
git remote add origin {[email protected]/user/project}
- 上传
git push origin master
到此SVN成功上传至Github上, 提交记录都是存在的.
参考:
1.https://blog.waterstrong.me/svn-to-git-migration
2.https://www.lovelucy.info/codebase-from-svn-to-git-migration-keep-commit-history.html
3.https://www.jianshu.com/p/29f0d634aba5