文章目录
一、SVN项目迁移到GIT并保留commit记录
1. 编辑userinfo.txt
格式为svn_username=git_username,提交记录里出现的所有svn_user都要有对应git_user
svn用户 = GitLab用户<GitLab用户邮箱>
svn_user1 = git_user1 <git_user1@xxx.com>
svn_user2 = git_user2 <git_user2@xxx.com>
2. 从svn拉取代码
配置git信息:
git config --global user.name "YOUR_USERNAME"
git config --global user.email "YOUR_EMAIL"
查看配置:
git config --list
拉取代码(项目越大,花费时间越多):
git svn clone -r 282506:HEAD svn_url --no-metadata -A userinfo_path local_path
- -r 282506:HEAD 代表从svn的282506版本到最新版本的提交记录,避免从第一个版本拉取数据量过大,操作耗时高。 如果需要拉取所有记录,可去除 -r 282506:HEAD
- svn_url 你的svn项目地址
- –no-metadata 防止git拉取无用的SVN附加信息
- local_path 为git clone下来的svn目录,会自动新建
- -A userinfo_path 你的userinfo.txt路径
3. 提交代码到git
a. 使用http传输:项目总大小不大于50M
cd localpath
git remote add origin https://gitee.com/xxx/xxx.git
查看关联情况:
git remote -v
如果关联有误,可以删除关联:
git remote rm origin
b. 使用ssh传输:项目总大小大于50M
生成公钥:
ssh-keygen –t rsa –C "YOUR_EMAIL"
cat ~/.ssh/id_rsa.pub
将生成的公钥,复制到你的gitee/gitlab ssh公钥设置
测试是否能用ssh登录git:
ssh -T git@gitee.com
提交代码:
git remote set-url origin git@gitee.com:xxxx/xxx.git
4. push代码到远端
git push -u origin master
5.操作实例
git config --global user.name "zhanghan"
git config --global user.email "zhanghan@gdyd.com"
git svn clone --no-metadata -A userinfo.txt https://10.66.0.1/eip-ng/branches/eip-docx docx
cd docx
ssh-keygen –t rsa –C "zhanghan@gdyd.com"
cat ~/.ssh/id_rsa.pub
在gitee官网添加ssh公钥
git remote set-url origin git@gitee.com:gdydit_eip/docx.git
git push -u origin master
二、获取Git提交计数
获取Git存储库的提交次数,有点像SVN版本号,
目标是将其用作唯一的,递增的内部版本号。
git log --pretty=format:'' | wc -l
要获取所有分支的提交计数:
git rev-list --all --count
要获取修订的提交计数(HEAD,,master提交哈希):
git rev-list --count <revision>
返回按提交者分组的提交计数:
git shortlog -s
输出:
14 John lennon
9 Janis Joplin