SVN迁移到Gitlab实践经历

svn 迁移至git操做手册html

项目交付、版本管理工具变动等状况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等。git自带了从svn迁移至git的工具命令,可很好的对svn上的提交历史作迁移和映射,操做简单方便。可是初次接触不熟练,这里作一个总结和记录,内容尽可能简单化。争取提供给刚刚接触git和准备迁移的用户一个简单易懂的方案。mysql

旧svn服务器:192.168.1.185(对生产的敬畏)git

新svn+git服务器:192.168.1.203github

我是把旧的svn经过dump下来传到203的svn上面这须要点时间,这个原理跟mysql的dump同样sql

把SVN上的代码仓库迁移到Gitlab上,实际上就是把SVN仓库转变成Git仓库,而且但愿能保留原SVN仓库的Commit等历史记录,这一点很重要。
SVN迁移到Gitlab须要安装git-svn 服务器

yum install -y git-svn

 

 创建users.txt(存储svn帐号与gitlab上帐号的关联性)svn

svn log svn://192.168.1.203 -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > ./users.txt

获得的结果:工具

 

 

 而后开始把SVN仓库转变成Git仓库,执行如下命令:gitlab

git svn clone svn://192.168.1.203/XinglvTmc/ --no-metadata --authors-file=users.txt --trunk=trunk --tags=tags --branches=branch XinglvTmc

添加GitLab到Git源信息

git remote add origin URL

注:目的地gitlab仓库地址post

 

5. 将trunk, branches等上传

git push origin --all

为了将标签变为合适的 Git 标签,运行

# cd  my_project
# cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/
# rm -Rf .git/refs/remotes/origin/tags

这会使原来在 remotes/origin/tags/ 里的远程分支引用变成真正的(轻量)标签。

接下来,将 refs/remotes 下剩余的引用移动为本地分支:

# cp -Rf .git/refs/remotes/* .git/refs/heads/
# rm -Rf .git/refs/remotes
 
如今全部的旧分支都是真正的 Git 分支,而且全部的旧标签都是真正的 Git 标签。 最后一件要作的事情是,将你的新 Git 服务器添加为远程仓库并推送到上面。
下面是一个将你的服务器添加为远程仓库的例子:
 git remote add origin http://192.168.1.203/root/xinglvtmc.git/

 

 

git fatal: 远程 origin 已经存在。

不当心将git远程地址配错了,再次配置提示如下错误:

fatal: 远程 origin 已经存在。

此时只须要将远程配置删除,从新添加便可;

git remote rm origin

git remote add origin https://github.com/***/WebCrawlers.git

再次提交文件便可正常使用

粗心形成的小错误,顺便说一下,若是git没有commit就执行push操做会出现如下错误

fatal: unable to access 'https://github.com/***/WebCrawlers.git/': Empty reply from server

解决:只须要先commit 在 push便可

 

 

 

gitlab删除已上传项目中的文件夹

 

相关文章
相关标签/搜索