Как правильно сделать так, чтобы удаленные ветви / теги, существующие после git-svn init / git-svn, загружали в локальные ветви / теги Git, прежде чем отправлять в мое удаленное Git-репо и вообще отказываться от SVN.
У меня есть:
- Выполнить
git svn init
Обновлен раздел svn-remote "svn"
моего файла .git / config:
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, которое превращает эти ветви / теги в локальные?
Я попробовал совет для 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
для каждой папки тегов.