背景
在代码提交时同时把代码提交到svn
可行性分析
git有提供原生的Git-SVN(原生工具),初步分析可行
操作
克隆SVN仓库到本地Git
git svn clone <SVN_URL> --authors-file=authors.txt --prefix=svn/
关联Git远程仓库(可选)
git remote add origin <GIT_REMOTE_URL>
git push -u origin master # 若需同时保留Git仓库
配置自动同步机制
编写同步脚本(建议手动提交)
#!/bin/bash
cd /path/to/git-svn-repo
git svn rebase # 拉取SVN最新提交并合并到本地分支:ml-citation{ref="1,5" data="citationList"}
git push origin master # 推送至Git远程仓库(可选)
git svn dcommit # 推送Git提交到SVN:ml-citation{ref="2,5" data="citationList"}
手动提交
最好使用git shell搞,分支、tag建议不要提交到SVN
# 进入命令
cd /path/to/git-svn-repo
# 更新SVN
git svn fetch
# 提交GIT
git commit -m "XXXXXXXXXXXXXXX"
# 提交SVN
git svn dcommit
设置Git钩子触发同步
在本地Git仓库的 .git/hooks/post-commit 中添加:/path/to/sync_git_to_svn.sh
注意:确保脚本有执行权限:chmod +x sync_git_to_svn.sh



生成用户列表的方法
在git的shell下执行,执行后需手动补充右侧的 Git 用户信
svn log --xml | grep author | sort -u | perl -pe 's/<author>(.*?)<\/author>/$1 = /' > authors.txt

需要配置权限
git config svn-remote.svn.username svn上的用户名
一个用户缺失的报错信息

1375

被折叠的 条评论
为什么被折叠?



