【发布时间】:2010-07-08 17:40:15
【问题描述】:
在将 git-svn init/git-svn fetch 到本地 Git 分支/标签中,然后推送到我的远程 Git 存储库并完全放弃 SVN 之前,正确的方法是什么。
我有:
- 运行
git svn init -
将我的 .git/config 文件的
svn-remote "svn"部分更新为以下内容:url = file:///Users/Developers/git_transition/svn_repo fetch = cascade/trunk:refs/remotes/svn/trunk branches = cascade/branches/{5.0GA_CLEANUP,drag-n-drop-def-builder,help-text,hib-annotations,hibernate-annotations,image-editor,ldapconfig,liquibase,move-rename-prototype,progress-bar,progress-bar2,quartz-upgrade,recyclebin,rendering_metrics,shuttle_upgrade,spring3,web-services-no-nuller}:refs/remotes/svn/* branches = cascade/branches/{6.x,5.x,4.x,3.x,archive}/*:refs/remotes/svn/* tags = cascade/tags/{3.7.x,4.x,5.x,6.x,old-releases}/*:refs/remotes/svn/tags/* 运行
git svn fetch
git-svn clone 是否会做一些超出 init/fetch 的操作,将这些分支/标签转换为本地分支/标签?
我尝试了advice on Pro Git,但 .git/refs/remotes/svn/ 目录中除了空的 6.x、5.x、4.x、3.x、标签和存档目录之外什么都没有。我确实通过git branch -r 验证了远程分支是否存在。
有人建议我需要系统地将所有远程分支检查为本地分支:git checkout -b <local_branch_name> <svn_remote_branch_name>,但我在任何地方都没有得到明确的答案。
我已经能够使用此脚本转换标签:
git for-each-ref --format="%(refname)" refs/remotes/svn/tags/6.x |
grep -v @ | while read tag; do GIT_COMMITTER_DATE="$(git log -1
--pretty=format:"%ad" "$tag")" GIT_COMMITTER_EMAIL="$(git log -1
--pretty=format:"%ce" "$tag")" GIT_COMMITTER_NAME="$(git log -1
--pretty=format:"%cn" "$tag")" git tag -m "$(git log -1
--pretty=format:"%s%n%b" "$tag")" ${tag#refs/remotes/svn/tags/6.x/}
"$tag"; done
每个标签文件夹。
【问题讨论】: