svn迁移带日志到git

1 篇文章 0 订阅

一、svn直接导出到git master中(推荐)

进入需要导出目录的上一级目录

git svn clone http://PATHTOSVN
# git svn clone http://xxx.xxx.xxx.xxx:8443/svn/projectName

有了这一步就可以在命令行像操作Git一样操作SVN了。如果对git-svn的命令不习惯,可以试试用工具。

# 关联远程git库
git remote add origin http://xxx/xxx.git
# 推送代码到 git master分支
git push -u origin master

未跟踪历史处理

当前所在分支为master

git pull origin master --allow-unrelated-histories

# 合并dev分支代码到master
git merge dev
#  --allow-unrelated-histories
git merge dev --allow-unrelated-histories

二、已有代码合并svn历史

分支
(*)master
git-svn

1.拉取代码

git clone https://xxxx

2. git svn clone

# 进入所在项目上一级目录
cd gitProject/..
# 创建git-svn分支, 会在此目录下创建一个git-svn分支
git svn clone http://PATHTOSVN

2. 合并 git-svn到master

2.1 以git-svn为准

从 master 将代码合并到 git-svn

git checkout master
git merge git-svn --allow-unrelated-histories
# 提交代码到 git 库
git commit -m "svn log"
git push -u origin master

2.2 以master为准

从 master 将代码合并到 git-svn

# git merge master
# 历史记录合并
git merge master --allow-unrelated-histories

git checkout master
git merge git-svn
git commit -m "svn log"
git push -u origin master

参考

我的svn迁移到git

 折腾了一段时间,还是决定迁移到Git和Hg。

 

我的迁移命令序列
0 建立authors.txt文件,代码作者的名称对应表
svnuser = gituser <gituser@gmail.com>
1 导入典型结构的svn库
git svn clone svn://localhost/svn -s --authors-file=authors.txt --no-metadata repo.git
//由于是永久性迁移,所以此处用了--no-metadata,如果未来还需要互操作,建议不使用。
2 进入库
cd repo.git
3 导入忽略列表  
git svn show-ignore > .gitignore
4 移动远程标签到本地
cp -Rf .git/refs/remotes/tags/* .git/refs/tags/
rm -RF .git/refs/remotes/tags
5 移动远程分支到本地
cp -Rf .git/refs/remotes/* .git/refs/heads/
rm -Rf .git/refs/remotes
基本完成
剩下的可选操作包括
a.添加远程库,并推
git remote add origin https://localhost/git
git push remotes --all
有时候可能还需要
git push --tags
b.压缩库
git gc
c 导入非典型结构的svn库
git svn clone svn:://localhost --authors-file=authors.txt --no-metadata repo.git
d 导入忽略列表并以.gitignore形式建立新的列表 
git svn create-ignore
//会在每个目录内添加.gitignore文件,并且自动添加相应内容
或者
git svn show-ignore > /info/exclude
//会将忽略列表添加到exclude文件中,但exclude作用仅限本地
如果报告错误
config --get svn-remote.svn.fetch :refs/remotes/git-svn$: command returned error: 1
则可以通过指定分支解决
git svn show-ignore -i trunk > .gitignore
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值